搜索

首页  >  问答  >  正文

javascript - 红宝书152页hasPrototypeProperty(object,name)错了吗?

function hasProtoproperty(object,name){
    return !object.hasOwnproperty(name) && (name in object);
}

红宝书P152说该函数能检测属性是在原型还是在实例中

true在原型中
false在实例中

但是,当原型和实例中都不存在某属性的时候也会返回false啊

迷茫迷茫2785 天前893

全部回复(2)我来回复

  • 扔个三星炸死你

    扔个三星炸死你2017-06-26 10:59:58

    翻了一下书,函数没有错,但书中的解释确实容易引起误解。

    看函数名就好了——hasPrototypeProperty(object, name)——原意是判断一个对象的原型上有无指定属性,只要原型上没有指定属性,就会返回 false。

    我理解书中的解释是针对name这个属性说的,以对象有这个属性为前提,如果函数返回 false,那这个属性是在原型上。

    回复
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-26 10:59:58

    刚才我试了下,确实是,可能书中只是强调区别和方法吧,自己用的时候加个判断就完美了

    回复
    0
  • 取消回复