for in

作者: xgszl33614 | 来源:发表于2016-05-03 14:49 被阅读25次

    所有开发人员定义的属性都是可枚举的。

    for-in

    返回所有能够通过对象访问的、可枚举的属性,包括存在于实例中的属性,也包括存在于原型(原型链上所有原型)中的属性。屏蔽了原型中不可枚举属性的实例属性也会返回。

    instanceObj.hasOwnProperty(prop)

    继承自:Object.prototype.
    所以所有对象都有此方法。
    只有属性prop存在于对象实例中时,才会返回true。

    function Person() {}
    Person.prototype = {
        name : "xgs",
        age : "23"
    }
    var p1 = new Person();
    p1.hasOwnProperty("name");//false
    p1.name = "zl";
    p1.hasOwnProperty("name");//true
    

    结合in和hasOwnProperty

    //判断属性是否为原型属性
    function hasPrototypeProperty(obj, prop) {
        return !obj.hasOwnProperty(prop) && (prop in obj);//返回true时表明,对象的prop属性是存在于原型上的;返回false时,要么不存在该属性,要么是实例属性
    }
    

    相关文章

      网友评论

          本文标题:for in

          本文链接:https://www.haomeiwen.com/subject/nctrrttx.html