for in

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

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时,要么不存在该属性,要么是实例属性
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容