詳談js使用in和hasOwnProperty獲取對象屬性的區(qū)別
in判斷的是對象的所有屬性,包括對象實例及其原型的屬性;
而hasOwnProperty則是判斷對象實例的是否具有某個屬性。
示例代碼:
<script type="text/javascript"> function Person(){ } Person.prototype.name = "allen"; var person = new Person(); console.log(person.hasOwnProperty("name")); //false console.log("name" in person); //true console.log(person.name); //"allen" person.name = "justforse"; console.log(person.hasOwnProperty("name")); //true console.log("name" in person); //true console.log(person.name); //"justforuse" delete person.name; console.log(person.hasOwnProperty("name")); //false console.log("name" in person); //true console.log(person.name); //"allen" </script>
以上代碼執(zhí)行的時候,name屬性要么是從實例中獲取的,要么是來源于原型,所以使用in 來訪問 name屬性始終返回true;而hasOwnProperty()只在屬性存在與對象實例中時才返回true,當刪除了實例中的name屬性后,就恢復了原型中name屬性的連接,所以返回allen。
以上這篇詳談js使用in和hasOwnProperty獲取對象屬性的區(qū)別就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
用roll.js實現(xiàn)的圖片自動滾動+鼠標觸動的特效
用roll.js實現(xiàn)的圖片自動滾動+鼠標觸動的特效...2007-03-03event.currentTarget與event.target的區(qū)別介紹
event.currentTarget與event.target的區(qū)別想大家在使用的時候不是很在意,本文以測試代碼來講解它門之間的不同2012-12-12JavaScript基于對象方法實現(xiàn)數(shù)組去重及排序操作示例
這篇文章主要介紹了JavaScript基于對象方法實現(xiàn)數(shù)組去重及排序操作,涉及javascript基于對象方法的數(shù)組遍歷、比較、去重、排序等相關操作技巧,需要的朋友可以參考下2018-07-07