淺談js使用in和hasOwnProperty獲取對(duì)象屬性的區(qū)別
in判斷的是對(duì)象的所有屬性,包括對(duì)象實(shí)例及其原型的屬性;
而hasOwnProperty則是判斷對(duì)象實(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í)例中獲取的,要么是來(lái)源于原型,所以使用in 來(lái)訪問 name屬性始終返回true;而hasOwnProperty()只在屬性存在與對(duì)象實(shí)例中時(shí)才返回true,當(dāng)刪除了實(shí)例中的name屬性后,就恢復(fù)了原型中name屬性的連接,所以返回allen。
這篇淺談js使用in和hasOwnProperty獲取對(duì)象屬性的區(qū)別就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript設(shè)計(jì)模式中的橋接和中介者模式
這篇文章主要介紹了JavaScript設(shè)計(jì)模式中的橋接和中介者模式,橋接設(shè)計(jì)模式是一種偏向于組合的設(shè)計(jì)模式,而非繼承的設(shè)計(jì)模式,實(shí)現(xiàn)的細(xì)節(jié)從一個(gè)模塊推送給另一個(gè)具有單獨(dú)模塊的對(duì)象,而中介者設(shè)計(jì)模式是指通過(guò)一個(gè)中介者對(duì)象封裝一系列的對(duì)象交互2022-06-06
淺析JavaScript中的同名標(biāo)識(shí)符優(yōu)先級(jí)
這篇文章主要介紹了JavaScript中的同名標(biāo)識(shí)符優(yōu)先級(jí)。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12
小程序開發(fā)中如何使用async-await并封裝公共異步請(qǐng)求的方法
在平常的項(xiàng)目開發(fā)中肯定會(huì)遇到同步異步執(zhí)行的問題,這篇文章主要介紹了小程序開發(fā)中如何使用async-await并封裝公共異步請(qǐng)求的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
JavaScript實(shí)現(xiàn)H5接金幣功能(實(shí)例代碼)
這篇文章主要介紹了JavaScript實(shí)現(xiàn)H5接金幣功能,本文分步驟通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
javascript如何判斷數(shù)組內(nèi)元素是否重復(fù)的方法集錦
javascript如何判斷數(shù)組內(nèi)元素是否重復(fù)的方法集錦...2007-02-02

