ECMAScript5中的hasOwnProperty()方法,用於判斷只在屬性存在與對象實例中的時候,返回true,in操作符只要通過對象能訪問到屬性就返回true。
因此只要in操作符返回true而hasOwnProperty()返回false,就可以確定屬性是原型中的屬性。
所以有如下函數:
function hasPrototypeProperty(obj, name) { return !obj.hasOwnProperty(name) && (name in obj); }
當屬性存在對象實例上的時候,函數返回false,表示該屬性不是存在原型上,當屬性存在原型上的時候,函數返回true。