{this.name = ‘Lee’;this.age = 20;this.sayName = function() {console.log(this.name)};}Person.prototype.height = 180; var p = new Person();判断属性hasOwnProperty(property_name)
检测一个属性书否存在于实例中,如果是则返回true。
p.hasOwnProperty(“name”);// truep.hasOwnProperty(“height”);// falsein
能够通过对象访问给定属性时返回true,无论该属性存在于实例中还是原型中。
p;// true获取属性获取所有可枚举属性for-in
返回所有能够通过对象访问的、可枚举的属性,其中既包括存在于实例中的属性,也包括存在于原型中的属性。 覆盖原型属性的自定义属性也将返回,不论是否标记为可枚举。
for(var i in p) {console.log(i);}获取实例属性Object.keys()
接收一个对象做参数,返回一个包含所有可枚举的实例属性的字符串数组。
Object.keys(p);// [“name”, “age”, “sayName”]Object.getOwnPropertyNames()
接收一个对象为参数,获取对象所有实例属性的字符串数组 ,,无论它是否可枚举。
Object.getOwnPropertyNames(p);// [“name”, “age”, “sayName”]原型属性
JavaScript中没有单独判断和获取对象原型属性的方法,但是我们可以通过前面的方法组合实现。
判断原型属性
通过组合hasOwnProperty()方法和in操作符,就可以区分该属性是否存在于原型中。
{return !obj.hasOwnProperty(name) && (name in obj);}hasOwnPrototype(p, “name”);// falsehasOwnPrototype(p, “height”);// true获取原型属性
通过组合for-in循环与hasOwnProperty()方法输出对象的原型属性。
for(var i in p) {!p.hasOwnProperty(i) && console.log(i);}// height
通过在原型对象上执行for-in循环。
for(var i in Person.prototype) {console.log(i);}// height
通过传递对象原型做参数给Object.keys()方法。
Object.keys(Person.prototype);// [“height”]总结实例属性
判断实例属性使用对象的hasOwnProperty()方法。或取对象实例属性使用Object.keys()或Object.getOwnPropertyNames()方法。
实例属性和原型属性
使用in操作符判断某个属性是否存在于对象的实例或原型中。使用for-in循环输出对象所有可枚举的实例属性与原型属性。
infor-in原型属性
通过组合hasOwnProperty()方法和in操作符,区分原型属性。通过传递对象原型给for-in循环或Object.keys()方法获取原型属性。
巨龟千岁,却也平淡无奇;昙花瞬间,却能绚丽无比。