最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript學(xué)習(xí)筆記之 對(duì)象篇(三) : hasOwnProperty

 更新時(shí)間:2014年06月24日 09:02:41   投稿:hebedich  
判斷一個(gè)屬性是定義在對(duì)象本身而不是繼承自原型鏈,我們需要使用從 Object.prototype 繼承而來(lái)的 hasOwnProperty 方法。 hasOwnProperty 方法是 Javascript 中唯一一個(gè)處理對(duì)象屬性而不會(huì)往上遍歷原型鏈的。
// Poisoning Object.prototype
Object.prototype.bar = 1;
var foo = {goo: undefined};

foo.bar; // 1
'bar' in foo; // true

foo.hasOwnProperty('bar'); // false
foo.hasOwnProperty('goo'); // true

在這里,只有 hasOwnProperty 能給出正確答案,這在遍歷一個(gè)對(duì)象的屬性時(shí)是非常必要的。Javascript 中沒(méi)有其他方法能判斷一個(gè)屬性是定義在對(duì)象本身還是繼承自原型鏈。

hasOwnProperty 作為屬性

Javascript 并未將 hasOwnProperty 設(shè)為敏感詞,這意味著你可以擁有一個(gè)命名為 hasOwnProperty 的屬性。這個(gè)時(shí)候你無(wú)法再使用本身的 hasOwnProperty 方法來(lái)判斷屬性,所以你需要使用外部的 hasOwnProperty 方法來(lái)進(jìn)行判斷。

var foo = {
 hasOwnProperty: function() {
 return false;
 },
 bar: 'Here be dragons'
};

foo.hasOwnProperty('bar'); // always returns false

// Use another Object's hasOwnProperty and call it with 'this' set to foo
({}).hasOwnProperty.call(foo, 'bar'); // true

// It's also possible to use hasOwnProperty from the Object
// prototype for this purpose
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true

總結(jié)

當(dāng)判斷對(duì)象屬性存在時(shí),hasOwnProperty 是唯一可以依賴(lài)的方法。這里還要提醒下,當(dāng)我們使用 for in loop 來(lái)遍歷對(duì)象時(shí),使用 hasOwnProperty 將會(huì)很好地避免來(lái)自原型對(duì)象擴(kuò)展所帶來(lái)的困擾。

下面是其他網(wǎng)友的補(bǔ)充:

Javascript中Object對(duì)象原型上的hasOwnProperty()用來(lái)判斷一個(gè)屬性是定義在對(duì)象本身而不是繼承自原型鏈。

obj.hasOwnProperty(prop)

參數(shù) prop

要檢測(cè)的屬性 字符串 名稱(chēng)或者 Symbol(ES6)

o = new Object();
o.prop = 'exists';
o.hasOwnProperty('prop');       // 返回 true
o.hasOwnProperty('toString');     // 返回 false
o.hasOwnProperty('hasOwnProperty');  // 返回 false

使用hasOwnProperty作為某個(gè)對(duì)象的屬性名

因?yàn)閖avascript沒(méi)有將hasOwnProperty作為一個(gè)敏感詞,所以我們很有可能將對(duì)象的一個(gè)屬性命名為hasOwnProperty,這樣一來(lái)就無(wú)法再使用對(duì)象原型的 hasOwnProperty 方法來(lái)判斷屬性是否是來(lái)自原型鏈。

var foo = {
  hasOwnProperty: function() {
    return false;
  },
  bar: 'Here be dragons'
};

foo.hasOwnProperty('bar'); // 始終返回 false

不能使用 該對(duì)象.hasOwnProperty 這種方法,怎么來(lái)解決這個(gè)問(wèn)題呢?我們需要使用原型鏈上真正的 hasOwnProperty 方法:

({}).hasOwnProperty.call(foo, 'bar'); // true
// 或者:
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true

參考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

相關(guān)文章

  • JavaScript關(guān)鍵字this的用法總結(jié)

    JavaScript關(guān)鍵字this的用法總結(jié)

    這篇文章介紹了JavaScript關(guān)鍵字this的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • JavaScript中的原型prototype完全解析

    JavaScript中的原型prototype完全解析

    這篇文章主要介紹了JavaScript中的原型prototype完全解析,prototype可是js界"一切皆對(duì)象"論調(diào)的重要支撐,講解了__proto__屬性和原型鏈等干貨,需要的朋友可以參考下
    2016-05-05
  • 全面分析JavaScript 繼承

    全面分析JavaScript 繼承

    在JAVASCRIPT中,類(lèi)的所有實(shí)例對(duì)象都是從同一個(gè)原型對(duì)象(父類(lèi))上繼承屬性,所以原型對(duì)象是類(lèi)繼承機(jī)制的核心。或者是用戶(hù)自己定義的類(lèi),下面小編帶大家學(xué)習(xí)一下吧
    2019-05-05
  • 詳解Javascript基礎(chǔ)之循環(huán)

    詳解Javascript基礎(chǔ)之循環(huán)

    這篇文章主要為大家介紹了Javascript基礎(chǔ)之循環(huán),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • JavaScript splice()方法詳解

    JavaScript splice()方法詳解

    這篇文章介紹了JavaScript splice()方法,有需要的朋友可以參考一下
    2013-11-11
  • javascript編程起步(第四課)

    javascript編程起步(第四課)

    javascript編程起步(第四課)...
    2007-02-02
  • jquery中prop()方法和attr()方法的區(qū)別淺析

    jquery中prop()方法和attr()方法的區(qū)別淺析

    官方例舉的例子感覺(jué)和attr()差不多,也不知道有什么區(qū)別,既然有了prop()這個(gè)新方法,不可能沒(méi)用吧,那什么時(shí)候該用attr(),什么時(shí)候該用prop()呢
    2013-09-09
  • javascript下for循環(huán)用法小結(jié)

    javascript下for循環(huán)用法小結(jié)

    javascript下for循環(huán)用法小結(jié)...
    2007-07-07
  • JavaScript bold方法入門(mén)實(shí)例(把指定文字顯示為粗體)

    JavaScript bold方法入門(mén)實(shí)例(把指定文字顯示為粗體)

    這篇文章主要介紹了JavaScript字符串對(duì)象的bold方法入門(mén)實(shí)例,bold方法用于把指定文字顯示為粗體,需要的朋友可以參考下
    2014-10-10
  • JavaScript實(shí)現(xiàn)表單元素的操作

    JavaScript實(shí)現(xiàn)表單元素的操作

    這篇文章介紹了JavaScript操作表單元素的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05

最新評(píng)論

米林县| 扶沟县| 九龙城区| 舒城县| 共和县| 洞头县| 鸡西市| 犍为县| 堆龙德庆县| 雅安市| 鹤山市| 怀来县| SHOW| 株洲县| 嘉定区| 托克逊县| 红河县| 澎湖县| 新泰市| 南宫市| 荣昌县| 曲麻莱县| 泊头市| 西安市| 环江| 嘉善县| 临沂市| 依安县| 比如县| 文水县| 延庆县| 宝山区| 贡山| 福海县| 永宁县| 都匀市| 兰州市| 阳西县| 杭锦旗| 崇文区| 长白|