JavaScript 检查来自实例还是原型
小于 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