javascript - 紅寶書(shū)152頁(yè)hasPrototypeProperty(object,name)錯(cuò)了嗎?
問(wèn)題描述
function hasProtoproperty(object,name){ return !object.hasOwnproperty(name) && (name in object);}
紅寶書(shū)P152說(shuō)該函數(shù)能檢測(cè)屬性是在原型還是在實(shí)例中
true在原型中false在實(shí)例中
但是,當(dāng)原型和實(shí)例中都不存在某屬性的時(shí)候也會(huì)返回false啊
問(wèn)題解答
回答1:翻了一下書(shū),函數(shù)沒(méi)有錯(cuò),但書(shū)中的解釋確實(shí)容易引起誤解。
看函數(shù)名就好了——hasPrototypeProperty(object, name)——原意是判斷一個(gè)對(duì)象的原型上有無(wú)指定屬性,只要原型上沒(méi)有指定屬性,就會(huì)返回 false。
我理解書(shū)中的解釋是針對(duì)name這個(gè)屬性說(shuō)的,以對(duì)象有這個(gè)屬性為前提,如果函數(shù)返回 false,那這個(gè)屬性是在原型上。
回答2:剛才我試了下,確實(shí)是,可能書(shū)中只是強(qiáng)調(diào)區(qū)別和方法吧,自己用的時(shí)候加個(gè)判斷就完美了
