JavaScript 检查来自实例还是原型
方法
js
fn1 instanceof Fun // fn1 是由构造函数 Fun 构造出来的吗?返回 Boolean
Object.getPrototypeOf(Person) // 返回 Person 构造函数的原型
Object.getPrototypeOf(Person) == Person.prototype // true
检查来自实例还是原型
js
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判断是不是原型
}
返回实例或原型
将实例保存为数组
js
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