亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

javaScript原型及原型鏈詳解(一)

springDevBird / 1071人閱讀

摘要:執(zhí)行行代碼,我們可以看到控制臺(tái)打印出來的結(jié)果如下結(jié)果印證了我們上面講的內(nèi)容指向的構(gòu)造函數(shù)指向的原型對(duì)象原型對(duì)象中指向構(gòu)造函數(shù)。

在javascript中原型和原型鏈機(jī)制是最難懂的部分(沒有之一),同時(shí)也是最重要的部分,在學(xué)習(xí)的過程中你可能認(rèn)認(rèn)真真的看了一遍但還是完全不懂書上說的什么,的確是這樣的,我在學(xué)習(xí)的時(shí)候可是反復(fù)看了4、5遍才初步理解了。 下面我把我的理解總結(jié)了一下希望對(duì)你們有一點(diǎn)幫助。

對(duì)象

講原型和原型鏈之前我們先講基礎(chǔ)知識(shí)——js對(duì)象。什么是對(duì)象呢? 這里引用別人的一句話“js中一切皆對(duì)象”,先不用完全明白,因?yàn)槲乙膊幻靼?,在后面的學(xué)習(xí)中慢慢理解。
首先在js中對(duì)象分為函數(shù)對(duì)象和普通對(duì)象兩種,看下面的例子:

 function fun1(){};
 var fun2 = function(){};
 var fun3 = new Function();

 var obj1 = new fun1();
 var obj2 = {};
 var obj3 =new Object();

 console.log(typeof Object);     // function
 console.log(typeof Function);   // function
 console.log(typeof obj1);         // object
 console.log(typeof obj2);         // object
 console.log(typeof obj3);         // object
 console.log(typeof fun1);       // function
 console.log(typeof fun2);       // function
 console.log(typeof fun3);       // function 

上面代碼中fun1、fun2、fun3是函數(shù)對(duì)象,obj1、obj2、obj3是普通對(duì)象,那么怎么區(qū)分呢? 很簡單,凡是通過 new Function() 創(chuàng)建的對(duì)象都是函數(shù)對(duì)象,其他的都是普通對(duì)象,fun1、fun2歸根結(jié)底還是通過 new Function() 創(chuàng)建的,因此也是函數(shù)對(duì)象。

普通對(duì)象

首先我們來講普通對(duì)象,我們通過一張圖來看看普通對(duì)象在創(chuàng)建時(shí)都做了些什么。

1   var foo = {
2      x: 10,
2      y: 20
3   }

4  console.log(foo.__proto === Object.prototype)    // true

上面的代碼中我們創(chuàng)建了一個(gè)普通對(duì)象foo,并初始化了兩個(gè)屬性(自身屬性)x、y,同時(shí)在對(duì)象內(nèi)部還自動(dòng)創(chuàng)建了一個(gè)屬性__proto__,這個(gè)__proto__屬性實(shí)際上是個(gè)指針,指向構(gòu)造foo的構(gòu)造函數(shù)的原型,這里foo對(duì)象實(shí)際是通過 new Object 創(chuàng)建的,因此第4行代碼結(jié)果為true. 這里講到了Object.prototype就涉及到函數(shù)對(duì)象了,因?yàn)橹挥泻瘮?shù)對(duì)象才有prototype屬性,所以接下來我們講函數(shù)對(duì)象。

函數(shù)對(duì)象

用與上面類似的代碼來解釋:

1    function foo() {
2        this.x = 10
3    }

4    foo.prototype.y = 20;

5    console.log(foo.__proto__);    
6    console.log(foo.prototype);   

當(dāng)我們創(chuàng)建foo函數(shù)時(shí),初始化了一個(gè)自身屬性x = 10,同時(shí)函數(shù)對(duì)象中自動(dòng)創(chuàng)建了一個(gè)prototype屬性和__proto__屬性,還為foo創(chuàng)建了一個(gè)原型對(duì)象foo.prototype。其中__proto__屬性我們上面已經(jīng)講過了,而prototype屬性則指向foo新創(chuàng)建的prototype原型對(duì)象,這個(gè)原型對(duì)象中自動(dòng)創(chuàng)建了一個(gè)constructor屬性,指向構(gòu)造函數(shù)foo。
(注:原型對(duì)象prototype也是一個(gè)普通對(duì)象,因此會(huì)自動(dòng)創(chuàng)建__proto__屬性,為避免文章變得晦澀難懂,此處省略,后面再深入講解)
執(zhí)行第4行代碼,為新創(chuàng)建的prototype原型對(duì)象添加了一個(gè)原型屬性y = 20。
執(zhí)行5、6行代碼,我們可以看到控制臺(tái)打印出來的結(jié)果如下:

結(jié)果印證了我們上面講的內(nèi)容:1.__proto__指向foo的構(gòu)造函數(shù)function 2.prototype指向foo的原型對(duì)象prototype 3.原型對(duì)象中constructor指向構(gòu)造函數(shù)foo。

下一節(jié)內(nèi)容:javaScript原型及原型鏈詳解(二)

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/83050.html

相關(guān)文章

  • javaScript原型原型詳解(二)

    摘要:當(dāng)然這還沒完,因?yàn)槲覀冞€有重要的一步?jīng)]完成,沒錯(cuò)就是上面的第行代碼,如果沒有這行代碼實(shí)例中的指針是指向構(gòu)造函數(shù)的,這樣顯然是不對(duì)的,因?yàn)檎G闆r下應(yīng)該指向它的構(gòu)造函數(shù),因此我們需要手動(dòng)更改使重新指向?qū)ο蟆? 第一節(jié)內(nèi)容:javaScript原型及原型鏈詳解(二) 第一節(jié)中我們介紹了javascript中的原型和原型鏈,這一節(jié)我們來講利用原型和原型鏈我們可以做些什么。 普通對(duì)象的繼承 ...

    widuu 評(píng)論0 收藏0
  • 【前端芝士樹】Javascript原型原型

    摘要:在創(chuàng)建對(duì)象不論是普通對(duì)象還是函數(shù)對(duì)象的時(shí)候,都有一個(gè)叫做的內(nèi)置屬性,用于指向創(chuàng)建它的構(gòu)造函數(shù)的原型對(duì)象,也就是。因?yàn)橐粋€(gè)普通對(duì)象的構(gòu)造函數(shù)所以原型鏈原型鏈的形成是真正是靠而非。參考文章最詳盡的原型與原型鏈終極詳解,沒有可能是。 【前端芝士樹】Javascript的原型、原型鏈以及繼承機(jī)制 前端的面試中經(jīng)常會(huì)遇到這個(gè)問題,自己也是一直似懂非懂,趁這個(gè)機(jī)會(huì)整理一下 0. 為什么會(huì)出現(xiàn)原型和...

    yy736044583 評(píng)論0 收藏0
  • JavaScript學(xué)習(xí)總結(jié)(五)原型原型詳解

    摘要:原型對(duì)象內(nèi)部也有一個(gè)指針屬性指向構(gòu)造函數(shù)實(shí)例可以訪問原型對(duì)象上定義的屬性和方法。在創(chuàng)建子類型的實(shí)例時(shí),不能向超類型的構(gòu)造函數(shù)中傳遞參數(shù)。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 私有變量和函數(shù) 在函數(shù)內(nèi)部定義的變量和函數(shù),如果不對(duì)外提供接口,外部是無法訪問到的,也就是該函數(shù)的私有的變量和函數(shù)。 function ...

    EscapedDog 評(píng)論0 收藏0
  • 詳解javascript的類

    摘要:原文地址詳解的類博主博客地址的個(gè)人博客從當(dāng)初的一個(gè)彈窗語言,一步步發(fā)展成為現(xiàn)在前后端通吃的龐然大物。那么,的類又該怎么定義呢在面向?qū)ο缶幊讨校愂菍?duì)象的模板,定義了同一組對(duì)象又稱實(shí)例共有的屬性和方法。這個(gè)等同于的屬性現(xiàn)已棄用。。 前言 生活有度,人生添壽。 原文地址:詳解javascript的類 博主博客地址:Damonare的個(gè)人博客 ??Javascript從當(dāng)初的一個(gè)彈窗語言,一...

    hufeng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<