标签:javascript
function Person() {
this.name = ‘Lee‘;
this.age = 20;
this.sayName = function() {console.log(this.name)};
}
Person.prototype.height = 180;
var p = new Person();
检测一个属性书否存在于实例中,如果是则返回true
。
p.hasOwnProperty("name"); // true
p.hasOwnProperty("height"); // false
能够通过对象访问给定属性时返回true
,无论该属性存在于实例中还是原型中。
"name" in p; // true
"height" in p; // true
返回所有能够通过对象访问的、可枚举的属性,其中既包括存在于实例中的属性,也包括存在于原型中的属性。
覆盖原型属性的自定义属性也将返回,不论是否标记为可枚举。
for(var i in p) {
console.log(i);
}
// name
// age
// sayName
// height
接收一个对象做参数,返回一个包含所有可枚举的实例属性的字符串数组。
Object.keys(p); // ["name", "age", "sayName"]
接收一个对象为参数,获取对象所有实例属性的字符串数组 ,无论它是否可枚举。
Object.getOwnPropertyNames(p); // ["name", "age", "sayName"]
JavaScript中没有单独判断和获取对象原型属性的方法,但是我们可以通过前面的方法组合实现。
通过组合hasOwnProperty()
方法和in
操作符,就可以区分该属性是否存在于原型中。
function hasOwnPrototype(obj, name) {
return !obj.hasOwnProperty(name) && (name in obj);
}
hasOwnPrototype(p, "name"); // false
hasOwnPrototype(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
循环输出对象所有可枚举的实例属性与原型属性。
通过组合hasOwnProperty()
方法和in
操作符,区分原型属性。通过传递对象原型给for-in
循环或Object.keys()
方法获取原型属性。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:javascript
原文地址:http://blog.csdn.net/vv314/article/details/46955603