Skip to content
此页目录
本文总阅读量

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

评论

交流群