猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
if(对象中的键)或if(object.hasOwnProperty(key)
以下两个语句是否产生相同的输出?有什么理由比另一种更喜欢一种方式吗?
if (key in object)
if (object.hasOwnProperty(key))
互换的青春
浏览 804
回答 3
3回答
慕慕森
小心-它们不会产生相同的结果。intrue如果key在原型链中某处被找到,也会返回;而Object.hasOwnProperty(就像名称已经告诉我们的那样),只会返回true如果key直接在该对象上可用(它“拥有”该属性)。
0
0
0
紫衣仙女
总之,hasOwnProperty()不看原型而in看原型。取自O'Reilly高性能Javascript:您可以使用hasOwnProperty()方法并传入成员名称来确定对象是否具有给定名称的实例成员。要确定对象是否可以访问具有给定名称的属性,可以使用in运算符。例如:var book = { title: "High Performance JavaScript", publisher: "Yahoo! Press" };alert(book.hasOwnProperty("title")); //truealert(book.hasOwnProperty("toString")); //falsealert("title" in book); //true alert("toString" in book); //true在此代码中,当title传入时,hasOwnProperty()返回true,因为title是一个对象实例;传入“ toString”时,该方法返回false,因为该实例上不存在该字符串。当每个属性名称与in运算符一起使用时,两次结果均为true,因为它搜索实例和原型。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
JavaScript
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续