詳談js使用in和hasOwnProperty獲取對象屬性的區(qū)別
in判斷的是對象的所有屬性,包括對象實(shí)例及其原型的屬性;
而hasOwnProperty則是判斷對象實(shí)例的是否具有某個(gè)屬性。
示例代碼:
<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í)行的時(shí)候,name屬性要么是從實(shí)例中獲取的,要么是來源于原型,所以使用in 來訪問 name屬性始終返回true;而hasOwnProperty()只在屬性存在與對象實(shí)例中時(shí)才返回true,當(dāng)刪除了實(shí)例中的name屬性后,就恢復(fù)了原型中name屬性的連接,所以返回allen。
以上這篇詳談js使用in和hasOwnProperty獲取對象屬性的區(qū)別就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
js+springMVC 提交數(shù)組數(shù)據(jù)到后臺的實(shí)例
今天小編就為大家分享一篇js+springMVC 提交數(shù)組數(shù)據(jù)到后臺的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
js實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建的元素綁定事件
下面小編就為大家?guī)硪黄猨s實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建的元素綁定事件。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07
js實(shí)現(xiàn)京東秒殺倒計(jì)時(shí)功能
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)京東秒殺倒計(jì)時(shí)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
BootStrap Validator對于隱藏域驗(yàn)證和程序賦值即時(shí)驗(yàn)證的問題淺析
這篇文章主要介紹了BootStrap Validator對于隱藏域驗(yàn)證和程序賦值即時(shí)驗(yàn)證的問題的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12
使用ESLint禁止項(xiàng)目導(dǎo)入特定模塊的方法步驟
這篇文章主要介紹了使用ESLint禁止項(xiàng)目導(dǎo)入特定模塊的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03

