成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

體驗javascript之美第七課 理解原型鏈和擴(kuò)展原型方法

wslongchen / 1969人閱讀

摘要:原型鏈理解第一件事你不用管其他語言,一句話,你只要記住里面的對象包含一個原型,原型是啥,就是另外一個對象。原型就相當(dāng)于你家的車棚子,而你的那個自行車就是對象。萬事萬物皆對象有啥用一句話,擴(kuò)展原型方法,給大家一到面試題,數(shù)組去重自己體會下。

概述

通過上節(jié)課的學(xué)習(xí),大家已經(jīng)會用一種json的方式定義對象了,其實這個就是傳說中的單體模式,當(dāng)然這個大家不用記,關(guān)于設(shè)計模式暫時不用了解。但是總感覺哪里跟你平常用的或者聽到的不一樣吧,比如好像js聽說有什么原型繼承,還有它的對象好像跟傳統(tǒng)的js對象不一樣什么的。好,今天我就讓你徹底明白里面的花花草草。

1.原型鏈理解

第一件事你不用管其他語言,一句話,你只要記住js里面的對象包含一個原型,原型是啥,就是另外一個對象。

舉個例子:

你每天騎著自行車去上學(xué),然后你車子壞了咋弄,要么去自己家的車棚子里推一輛繼續(xù)騎,要么從車棚子里找到工具修修。

原型就相當(dāng)于你家的車棚子,而你的那個自行車就是對象。

自行車上的書包是你人為加上去的,而螺絲刀、和輪胎有些是你自行車必須有的東西,有些是修理你自行車的東西。好,我們回到代碼表示一下。

            var bike = {
                車筐:"書包"
            };
            console.log(bike);//Object {車筐: "書包"}
            //怎么看車棚子,也就是原型,里面放著各種方法和屬性
            console.log(bike.__proto__)

記住,這個車棚里面有各種工具和零件,很拽,還能生產(chǎn)自行車。理解到這個程度就行了,有一天你放學(xué)回家了到家發(fā)現(xiàn)你的書包不見了,你怎么辦,肯定是先看看自己的車子上有么有,沒有咋弄,去車棚找,車棚子沒有,車棚子很拽,上面還有個生產(chǎn)車棚子的__proto_proto逐層向上查找就是原型鏈查找。如圖。

圖片描述

2.原型的用途

? 我知道這個有什么用?好我們看一個實際的情況,https://docs.angularjs.org/ap...

? angular的merge函數(shù),簡單的說,有一個對象a,還有一個對象b,我想把兩個對象合并成一個對象怎么實現(xiàn)?注意要求只是合并人加的,原型上的不算。

? 直接上源碼,簡單的讓人發(fā)指,這個就是angular的架構(gòu)(1.6.2)我粗糙的實現(xiàn)了一下。

        (function(window) {
            var angular = window.angular || (window.angular = {});
            angular.merge=function(dst,src){
                for(var prop in src){
                    if(src.hasOwnProperty(prop)){

                        dst[prop] =src[prop];
                    }
                }
                return dst;  
            }
        })(window);

        var person = {
            name:"leo",
            age:18
        };
        var person2 = {
            job:"教前端的"
        };
        console.log(angular.merge(person,person2));
       // https://docs.angularjs.org/api/ng/function/angular.merge

hasOwnProperty這個用來判斷只是自己直接添加的對象,現(xiàn)在知道用途了吧?理解了js原理,能看懂和實現(xiàn)angular的庫,你還發(fā)愁自己不會用angular嗎?

2.萬事萬物皆對象

? 經(jīng)常聽人說,js萬事萬物皆對象

? 怎么證明,不墨跡上代碼

?

        var num = 12;
        console.log(num.__proto__);
        var str = "abc";
        console.log(str.__proto__);
        var arr = [];
        console.log(arr.__proto__.__proto__);
        var json = {};
        console.log(json.__proto__.__proto__);

不解釋,一句話,所有對象都有一個祖宗對象Object。

3.萬事萬物皆對象有啥用?

? 一句話,擴(kuò)展原型方法,給大家一到面試題,數(shù)組去重自己體會下。

思路,判斷某個值出現(xiàn)的位置是否等于當(dāng)前循環(huán)的i,
比如,
    arr[1]的下標(biāo)是1,而arr.indexOf(arr[1])返回是0 說明 1在 i = 1的位置之前出現(xiàn)過了,所以重復(fù)。上代碼:

    var arr = [1,1,12,5,8,7,8,7,21,5,0,0];
    var arr2 = [];
    for(var i = 0;i

那么問題就來了 如何實現(xiàn)讓indexOf方法兼容低版本瀏覽器,這里就體現(xiàn)萬事萬物皆對象的好處了。

上代碼:

Array.prototype.indexOf=function(item){
    for(var i=0;i

有同學(xué)可能會想,不對啊,我們不講new關(guān)鍵字那些嗎?放心,這些下節(jié)課就講了。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/82668.html

相關(guān)文章

  • 體驗javascript之美6:如果你覺得什么都會了或者不知道js學(xué)什么了看這里-面向?qū)ο缶幊?/b>

    摘要:面向過程函數(shù)式編程面向?qū)ο缶幊痰诙€并不是大家理解的那樣,我們先說舉個現(xiàn)實例子就明白了。多說一句函數(shù)是編程是非常強大也是我最喜歡的,以后再說,我們先說面向?qū)ο缶幊獭? 概述 當(dāng)大家已經(jīng)把js的語言基礎(chǔ)理解了,然后能夠?qū)懗鲆恍┖唵蔚睦恿?,這個時候基本上達(dá)到了一年工作經(jīng)驗的水平,而自己能夠獨立的寫一些小功能,完成一些小效果,或者臨摹修改一些比較復(fù)雜的插件的時候差不多就是兩年工作經(jīng)驗的水平,...

    changfeng1050 評論0 收藏0
  • 體驗js之美第八課-面向?qū)ο髣?chuàng)建和繼承終結(jié)篇

    摘要:概述到這里我們講說面向?qū)ο蟮南盗胁糠值淖詈笠粋€課程,面向?qū)ο蟊仨氄莆諆蓚€東西一個是對象的創(chuàng)建一個是繼承。只需要記住一句話,屬性放在構(gòu)造函數(shù)里面,方法放在原型上。 概述 到這里我們講說js面向?qū)ο蟮南盗胁糠值淖詈笠粋€課程,面向?qū)ο蟊仨氄莆諆蓚€東西一個是對象的創(chuàng)建一個是繼承。這節(jié)課我們重點說說這兩個問題最后我們說下在ES6里面面向?qū)ο笤趺赐妗?1對象的創(chuàng)建 我們第一節(jié)課已經(jīng)就會用了,單體模...

    jzzlee 評論0 收藏0
  • 理解原型鏈和原型繼承

    摘要:原型鏈和構(gòu)造函數(shù)是一種面向?qū)ο蟮恼Z言,并且可以進(jìn)行原型繼承。來了極大的支持了工程化,它的標(biāo)準(zhǔn)讓瀏覽器內(nèi)部實現(xiàn)類和類的繼承構(gòu)造函數(shù)構(gòu)造函數(shù)調(diào)用父類構(gòu)造函數(shù)現(xiàn)在瀏覽器對其支持程度還不高。 原型鏈 原型鏈比作用域鏈要好理解的多。 JavaScript中的每個對象,都有一個內(nèi)置的_proto_屬性。這個屬性是編程不可見的(雖然ES6標(biāo)準(zhǔn)中開放了這個屬性,然而瀏覽器對這個屬性的可見性的支持不同)...

    XboxYan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<