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

javascript 易錯知識點實例小結(jié)

 更新時間:2020年04月25日 13:16:54   作者:廖飛銀  
這篇文章主要介紹了javascript 易錯知識點,結(jié)合實例形式總結(jié)分析了javascript 對象屬性、繼承常見易錯知識點與注意事項,需要的朋友可以參考下

本文實例總結(jié)了javascript 易錯知識點。分享給大家供大家參考,具體如下:

為什么 typeof null === 'object'

原理是這樣的,不同的對象在底層都表示為二進制,在JavaScript中二進制前三位都為0的話會被判斷為 object 類型, null 的二進制表示是全0,自然前三位也是0,所以執(zhí)行 typeof 時會返回“ object ”。

對象屬性的存在性

如 myObject.a 的屬性訪問返回值可能是 undefined ,但是這個值有可能是屬性中存儲的 undefined ,也可能是因為屬性不存在所以返回 undefined 。那么如何區(qū)分這兩種情況呢?

var myObject = {
  a:2
};

// 方案一
("a" in myObject); // true
("b" in myObject); // false

// 方案二
myObject.hasOwnProperty( "a" ); // true
myObject.hasOwnProperty( "b" ); // false

// 方案三
Object.prototype.hasOwnProperty.call(myObject, 'b')

對象繼承的三種方法

參考如下代碼:

		function Foo(name) {
			this.name = name;
		}

		Foo.prototype.myName = function() {
			console.log(this.name)
		}

		function Bar(name, label) {
			Foo.call(this, name);
			this.label = label;
		}
        
        // 方法1
		Bar.prototype = Object.create(Foo.prototype)
        
        // 方法2
		Bar.prototype = Foo.prototype;

        // 方法3
        Bar.prototype = new Foo();

		//Bar.prototype.constructor = Bar;

		Bar.prototype.sayName = function() {
			console.log(this.name)
		}

		
		var b = new Foo('fayin')
	
		b.sayName()

上例中,三種方法都可以使 Bar 繼承 Foo.prototype 上的方法,但它們之間又有微妙的差別:

Object.create(..) 會憑空創(chuàng)建一個“新”對象并把新對象內(nèi)部的 [[Prototype]] 關(guān)聯(lián)到你指定的對象(本例中是 Foo.prototype )。

Bar.prototype = Foo.prototype 并不會創(chuàng)建一個關(guān)聯(lián)到 Bar.prototype 的新對象,它只是讓 Bar.prototype 直接引用 Foo.prototype 對象。因此當你執(zhí)行類似 Bar.prototype.myLabel = ... 的賦值語句時會直接修改 Foo.prototype 對象本身。

Bar.prototype = new Foo() 的確會創(chuàng)建一個關(guān)聯(lián)到 Bar.prototype 的新對象。但是它使用了 Foo(..)的“構(gòu)造函數(shù)調(diào)用”,如果函數(shù) Foo 有一些副作用(比如寫日志、修改狀態(tài)、注冊到其他對象、給 this 添加數(shù)據(jù)屬性,等等)的話,就會影響到 Bar() 的“后代”,后果不堪設(shè)想。

結(jié)論

因此,要創(chuàng)建一個合適的關(guān)聯(lián)對象,我們必須使用 Object.create(..) 而不是使用具有副作用的 Foo(..) 。這樣做唯一的缺點就是需要創(chuàng)建一個新對象然后把舊對象拋棄掉,不能直接修改已有的默認對象。

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript傳值操作技巧總結(jié)》、《javascript編碼操作技巧總結(jié)》、《JavaScript中json操作技巧總結(jié)》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動畫特效與技巧匯總》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

相關(guān)文章

  • JavaScript數(shù)組迭代方法

    JavaScript數(shù)組迭代方法

    本文主要介紹了JavaScript數(shù)組迭代方法,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • JavaScript中止網(wǎng)絡(luò)請求的常見方法

    JavaScript中止網(wǎng)絡(luò)請求的常見方法

    在JavaScript中,中止網(wǎng)絡(luò)請求通常依賴于所使用的網(wǎng)絡(luò)請求庫或框架,本文給大家介紹了是一些常見的方法和庫,以及它們?nèi)绾沃С种兄咕W(wǎng)絡(luò)請求,并通過代碼講解的非常詳細,需要的朋友可以參考下
    2024-10-10
  • uni-app下Worker的使用示例詳解

    uni-app下Worker的使用示例詳解

    這篇文章主要介紹了uni-app下Worker的使用示例詳解,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-08-08
  • JS實現(xiàn)容器模塊左右拖動效果

    JS實現(xiàn)容器模塊左右拖動效果

    這篇文章主要為大家詳細介紹了JS實現(xiàn)容器模塊左右拖動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • 學習JavaScript編程語言的8張思維導圖分享

    學習JavaScript編程語言的8張思維導圖分享

    這篇文章主要介紹了學習JavaScript編程語言的8張思維導圖分享,本文給出了javascript變量、javascript運算符、javascript數(shù)組、javascript流程語句、javascript字符串函數(shù)、javascript函數(shù)基礎(chǔ)、javascript基礎(chǔ)DOM操作、javascript正則表達式的思維導圖,需要的可以參考下
    2015-03-03
  • Javascript實時柱狀圖實現(xiàn)代碼

    Javascript實時柱狀圖實現(xiàn)代碼

    js實現(xiàn)的實時柱狀圖,非常有創(chuàng)意的想法。
    2008-10-10
  • javascript簡單拖拽實現(xiàn)代碼(鼠標事件 mousedown mousemove mouseup)

    javascript簡單拖拽實現(xiàn)代碼(鼠標事件 mousedown mousemove mouseup)

    javascript簡單拖拽,簡單拖拽實現(xiàn)
    2012-05-05
  • Javascript實用方法之json合并的場景分析

    Javascript實用方法之json合并的場景分析

    這篇文章主要介紹了Javascript實用方法之json合并,jQuery 的“extend()”方法有兩個原型:合并的方法,分別是淺合并和深度合并,本文通過代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • 詳細講解js實現(xiàn)電梯導航的實例

    詳細講解js實現(xiàn)電梯導航的實例

    對于某一個頁面內(nèi)容繁多,如果我們滾動的時間較長,為了增加用戶體驗,我們需要實現(xiàn)點擊某一個按鈕,然后滾動到對應(yīng)的區(qū)域,滾動的時候,右側(cè)對應(yīng)的分類實現(xiàn)高亮,所以本文給大家詳細介紹講解了js實現(xiàn)電梯導航,需要的朋友可以參考下
    2023-10-10
  • uniapp自定義tabbar的方法(支持中間凸起、角標、動態(tài)隱藏tab和全端適用)

    uniapp自定義tabbar的方法(支持中間凸起、角標、動態(tài)隱藏tab和全端適用)

    一個項目有多個角色,比如醫(yī)生和患者,tabBar跳轉(zhuǎn)的路徑不一樣,但是在pages.json中無法配置多個tabBar,這時候就要自定義tabBar了,下面這篇文章主要給大家介紹了關(guān)于uniapp自定義tabbar(支持中間凸起、角標、動態(tài)隱藏tab和全端適用)的相關(guān)資料,需要的朋友可以參考下
    2023-04-04

最新評論

得荣县| 新巴尔虎左旗| 泰兴市| 南开区| 民乐县| 工布江达县| 岫岩| 利辛县| 林西县| 湘阴县| 乌兰察布市| 新竹县| 彰化市| 晋宁县| 马尔康县| 彝良县| 南和县| 酒泉市| 手游| 大姚县| 小金县| 周口市| 枣庄市| 桃园市| 凌云县| 洛川县| 洛南县| 乐清市| 霸州市| 夏津县| 赤水市| 汾西县| 泾阳县| 怀柔区| 余姚市| 平远县| 永济市| 灵山县| 新乡县| 宁城县| 临西县|