跳至主要內容

JavaScript 检查来自实例还是原型

h7ml小于 1 分钟约 209 字

JavaScript 检查来自实例还是原型

方法

fn1 instanceof Fun; // fn1 是由构造函数 Fun 构造出来的吗?返回 Boolean
Object.getPrototypeOf(Person); // 返回 Person 构造函数的原型
Object.getPrototypeOf(Person) == Person.prototype; // true

检查来自实例还是原型

Person.hasOwnProperty('fun'); // 是来自实例返回 true,不是返回 false
console.log('name' in a); // 实例或原型上有都返回 true

// 利用hasOwnProperty 与 in 判断到底来自实例还是原型
function hasO(object, name) {
  return object.hasOwnProperty(name) && name in object;
  // 判断是不是来自实例,如果不是,再in判断是不是原型
}

返回实例或原型

将实例保存为数组

function Person() {
  this.age = 'age';
}
Person.prototype.name = 'nn';
Person.prototype.sayName = function () {};

var p = new Person();
Object.keys(Person.prototype); // ["name", "sayName"] 原型中的所有实例
Object.keys(p); // ["age"] 只返回p 的实例
Object.getOwnPropertyNames(Person.prototype); // ["constructor", "name", "job", "sayName"] 包含constructor