function hasProtoproperty(object,name){ return !object.hasOwnproperty(name) && (name in object); }
紅寶書P152說此函數能偵測屬性是在原型還是在實例中
true在原型中 false在实例中
但是,當原型和實例中都不存在某屬性的時候也會回傳false啊
业精于勤,荒于嬉;行成于思,毁于随。
翻了一下書,函數沒有錯,但書中的解釋確實容易引起誤解。
看函數名稱就好了-hasPrototypeProperty(object, name)--原意是判斷一個物件的原型上有無指定屬性,只要原型上沒有指定屬性,就會傳回 false。
hasPrototypeProperty(object, name)
我理解書中的解釋是針對name這個屬性說的,以物件有這個屬性為前提,如果函數回傳 false,那麼這個屬性是在原型上。
name
剛才我試了一下,確實是,可能書中只是強調區別和方法吧,自己用的時候加個判斷就完美了
翻了一下書,函數沒有錯,但書中的解釋確實容易引起誤解。
看函數名稱就好了-
hasPrototypeProperty(object, name)
--原意是判斷一個物件的原型上有無指定屬性,只要原型上沒有指定屬性,就會傳回 false。我理解書中的解釋是針對
name
這個屬性說的,以物件有這個屬性為前提,如果函數回傳 false,那麼這個屬性是在原型上。剛才我試了一下,確實是,可能書中只是強調區別和方法吧,自己用的時候加個判斷就完美了