第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么使用Object.prototype.hasOwnProperty.call

為什么使用Object.prototype.hasOwnProperty.call

智慧大石 2019-11-26 10:51:29
如果我理解正確,那么Javascript中的每個(gè)對(duì)象都是從Object原型繼承的,這意味著Javascript中的每個(gè)對(duì)象都可以通過(guò)其原型鏈訪問(wèn)hasOwnProperty函數(shù)。在閱讀require.js的源代碼時(shí),我偶然發(fā)現(xiàn)了該函數(shù):function hasProp(obj, prop) {    return hasOwn.call(obj, prop);}hasOwn是對(duì)的引用Object.prototype.hasOwnProperty。將此功能編寫為function hasProp(obj, prop) {    return obj.hasOwnProperty(prop);}既然如此,我們?yōu)槭裁匆耆x此功能?是否只是為了獲得(略微)提高性能而使用快捷方式和對(duì)屬性訪問(wèn)進(jìn)行本地緩存的問(wèn)題,還是我缺少在沒有此方法的對(duì)象上使用hasOwnProperty的情況?
查看完整描述

3 回答

?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊

[我的示例之間]有什么實(shí)際區(qū)別嗎?


用戶可能有一個(gè)用創(chuàng)建的JavaScript對(duì)象Object.create(null),該對(duì)象將具有一個(gè)null [[Prototype]]鏈,因此將不可hasOwnProperty()用。由于這個(gè)原因,使用第二種表格將無(wú)法正常工作。


這也是更安全的參考Object.prototype.hasOwnProperty()(也更短)。


你可以想象某人可能做了...


var someObject = {

    hasOwnProperty: function(lol) {

        return true;

    }

};

如果hasProp(someObject)像您的第二個(gè)示例那樣實(shí)現(xiàn)該方法,將會(huì)失敗(它將直接在對(duì)象上找到該方法并調(diào)用該方法,而不是委托給Object.prototype.hasOwnProperty)。


但是,不太可能有人會(huì)重寫該Object.prototype.hasOwnProperty參考。


既然如此,我們?yōu)槭裁匆耆x此功能?


往上看。


這僅僅是快捷方式和屬性訪問(wèn)本地緩存的問(wèn)題,以(略有)提高性能...


從理論上講,它可能會(huì)更快,因?yàn)閇[Prototype]]不必遵循該鏈條,但是我懷疑這可以忽略不計(jì),而不是實(shí)現(xiàn)之所以如此。


...還是我錯(cuò)過(guò)了hasOwnProperty可能在沒有此方法的對(duì)象上使用的任何情況 ?


hasOwnProperty()存在于Object.prototype,但可以被覆蓋。每個(gè)本機(jī)JavaScript對(duì)象(但不能保證宿主對(duì)象都可以遵循此規(guī)則,請(qǐng)參見RobG的深入說(shuō)明)Object.prototype將其作為鏈上的最后一個(gè)對(duì)象null(當(dāng)然,返回的對(duì)象除外Object.create(null))。


查看完整回答
反對(duì) 回復(fù) 2019-11-26
  • 3 回答
  • 0 關(guān)注
  • 5660 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)