码迷,mamicode.com
首页 > 其他好文 > 详细

判断对象属性的几种方法

时间:2015-07-19 18:13:03      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:javascript

function Person() {
     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");       // true
p.hasOwnProperty("height");     // false

in

能够通过对象访问给定属性时返回true,无论该属性存在于实例中还是原型中。

"name" in p;       // true
"height" in p;     // true

获取属性

获取所有可枚举属性

for-in

返回所有能够通过对象访问的、可枚举的属性,其中既包括存在于实例中的属性,也包括存在于原型中的属性。
覆盖原型属性的自定义属性也将返回,不论是否标记为可枚举。

for(var i in p) {
    console.log(i);
}
// name
// age
// sayName
// height

获取实例属性

Object.keys()

接收一个对象做参数,返回一个包含所有可枚举的实例属性的字符串数组。

Object.keys(p);     //  ["name", "age", "sayName"]

Object.getOwnPropertyNames()

接收一个对象为参数,获取对象所有实例属性的字符串数组 ,无论它是否可枚举。

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()方法。

  1. hasOwnProperty(), 判断某个属性是否是对象的实例属性。
  2. Object.keys(),获取对象所有可枚举的实例属性。
  3. Object.getOwnPropertyNames(),获取所有的实例属性。

实例属性和原型属性

使用in操作符判断某个属性是否存在于对象的实例或原型中。使用for-in循环输出对象所有可枚举的实例属性与原型属性。

  1. in
  2. for-in

原型属性

通过组合hasOwnProperty()方法和in操作符,区分原型属性。通过传递对象原型给for-in循环或Object.keys()方法获取原型属性。

  1. hasOwnProperty() + in
  2. for(var i in Obj.prototype)
  3. Object.keys(Obj.prototype)

版权声明:本文为博主原创文章,未经博主允许不得转载。

判断对象属性的几种方法

标签:javascript

原文地址:http://blog.csdn.net/vv314/article/details/46955603

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!