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

資訊專欄INFORMATION COLUMN

對(duì)原型鏈和原型以及構(gòu)造函數(shù)的驗(yàn)證

source / 2629人閱讀

摘要:開局先上一張圖分清楚函數(shù)與對(duì)象得到結(jié)論對(duì)象都有這個(gè)屬性但是只有函數(shù)對(duì)象才有這個(gè)屬性。所有的原型對(duì)象都有屬性,該屬性對(duì)應(yīng)創(chuàng)建所有指向該原型的實(shí)例的構(gòu)造函數(shù)。原型鏈的頂端是。的原型鏈的上一個(gè)節(jié)點(diǎn)是本身這個(gè)很奇怪哎。

開局先上一張圖、分清楚函數(shù)與對(duì)象:

得到結(jié)論:對(duì)象都有_proto_這個(gè)屬性,但是只有函數(shù)對(duì)象才有prototype這個(gè)屬性。

得出上面結(jié)論后我們?cè)偕弦粡垐D、我們對(duì)話題研究都是基于這張圖:

根據(jù)上圖,自己些代碼論證一下得出一下結(jié)論:
const Foo =function(){};
const Foo_prototype = Foo.prototype;
const f1 = new Foo();
Foo.prototype == Foo.prototype //true
Foo_prototype.constructor == Foo //true
//1得出結(jié)論,Foo是一個(gè)函數(shù)對(duì)象,Foo的原型Foo_prototype的構(gòu)造函數(shù)就是Foo本身
f1.__proto__ == Foo.prototype // true
//2得出結(jié)論,foo的實(shí)例指向f1的原型鏈上一個(gè)節(jié)點(diǎn)也就是Foo的原型
Foo_prototype.__proto__ == Object;//true
//3得出結(jié)論,Foo原型指向Foo的上一個(gè)原型節(jié)點(diǎn)
const Object_prototype = Object.prototype;
Object_prototype.__proto__ == null//true
//4得出結(jié)論,Object的原型鏈上一個(gè)節(jié)點(diǎn)是null,這也就是萬(wàn)物皆對(duì)象,null中生對(duì)象
const Function_prototype = Function.prototype;
Object.__proto__ == Function_prototype//true
//5得出結(jié)論,原生對(duì)象指向Function的原型,
Function.__proto__ == Function_prototype;//true
//6得出結(jié)論,Function的原型鏈的上一個(gè)節(jié)點(diǎn)是Function本身
Foo.__proto__ == Function_prototype//true
//7得出結(jié)論,Foo的原型鏈上一個(gè)節(jié)點(diǎn)指向Function

**經(jīng)過上述代碼驗(yàn)證得出如下結(jié)論:
1.所有對(duì)象都有_proto_這個(gè)屬性。
2.所有的原型對(duì)象都有constructor屬性,該屬性對(duì)應(yīng)創(chuàng)建所有指向該原型的實(shí)例的構(gòu)造函數(shù)。
3.原型鏈的頂端是null。
**

**4.對(duì)象本身的prototype和_proto_毫無關(guān)系,_proto_指向原型鏈上一個(gè)節(jié)點(diǎn)的原型。
5.Function的原型鏈的上一個(gè)節(jié)點(diǎn)是Function本身(這個(gè)很奇怪哎)。**
OK,拋出一個(gè)問題:

//通常情況下,為了只繼承父函數(shù)的原型而不繼承其他靜態(tài)方法往往這樣定義
b = function(){};
c = function(){};
b.prototype.say = 1;
c.prototype.say = 2;
function extend(father,son){
  var def = function(){};
  def.prototype = father.prototype;
  son.prototype = new def();
}
extend(b,c)

問題:
1.繼承的時(shí)候可以直接使用son.prototype = father.prototype 嗎?
2.為什么要新建一個(gè)def函數(shù),然后son繼承def的原型來繼承呢?
3.通過1方法和2方法生成的son是一樣的嗎?

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

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

相關(guān)文章

  • JS中原型鏈和原型認(rèn)識(shí)

    摘要:在上面的各種原型的變換中,其實(shí)難點(diǎn)就在于構(gòu)造函數(shù)也是對(duì)象原型對(duì)象等所有對(duì)象都由構(gòu)造這四個(gè)點(diǎn)。 這篇文章主要是學(xué)習(xí)一下JavaScript中的難點(diǎn)------原型和原型鏈 自定義一個(gè)對(duì)象 我們學(xué)習(xí)一門編程語(yǔ)言,必然要使用它完成一些特定的功能,而面向?qū)ο蟮恼Z(yǔ)言因?yàn)榉先祟惖恼J(rèn)知規(guī)律,在這方面做得很好,今天我以JS為例,探索一下JS不同于其他面向?qū)ο蟮恼Z(yǔ)言的地方-------原型和原型鏈 首...

    Juven 評(píng)論0 收藏0
  • JS中原型鏈和原型認(rèn)識(shí)

    摘要:在上面的各種原型的變換中,其實(shí)難點(diǎn)就在于構(gòu)造函數(shù)也是對(duì)象原型對(duì)象等所有對(duì)象都由構(gòu)造這四個(gè)點(diǎn)。 這篇文章主要是學(xué)習(xí)一下JavaScript中的難點(diǎn)------原型和原型鏈 自定義一個(gè)對(duì)象 我們學(xué)習(xí)一門編程語(yǔ)言,必然要使用它完成一些特定的功能,而面向?qū)ο蟮恼Z(yǔ)言因?yàn)榉先祟惖恼J(rèn)知規(guī)律,在這方面做得很好,今天我以JS為例,探索一下JS不同于其他面向?qū)ο蟮恼Z(yǔ)言的地方-------原型和原型鏈 首...

    Shimmer 評(píng)論0 收藏0
  • 剖析JS原型鏈和繼承

    摘要:接下來我們來聊一下的原型鏈繼承和類。組合繼承為了復(fù)用方法,我們使用組合繼承的方式,即利用構(gòu)造函數(shù)繼承屬性,利用原型鏈繼承方法,融合它們的優(yōu)點(diǎn),避免缺陷,成為中最常用的繼承。 JavaScript是一門面向?qū)ο蟮脑O(shè)計(jì)語(yǔ)言,在JS里除了null和undefined,其余一切皆為對(duì)象。其中Array/Function/Date/RegExp是Object對(duì)象的特殊實(shí)例實(shí)現(xiàn),Boolean/N...

    darkerXi 評(píng)論0 收藏0
  • ES5原型鏈和ES6類實(shí)現(xiàn)詳解

    摘要:類才支持實(shí)例屬性代碼解讀上面暫時(shí)只是概念性的寫法,事實(shí)上,的類只是一個(gè)原型鏈的語(yǔ)法糖而已,主要是從寫法上更接近于面相對(duì)象的類而已,另外一個(gè)作用就是區(qū)分的構(gòu)造函數(shù)和函數(shù)之間的區(qū)分。 ES5的原型鏈和ES6的類實(shí)現(xiàn)詳解 JavaScript最初設(shè)計(jì)時(shí)受到了面相對(duì)象編程的影響,從而引入了new關(guān)鍵字,來實(shí)例化對(duì)象。而在ES5中new后面跟著的是構(gòu)造函數(shù)(也是函數(shù)),而到了ES6則改成了cla...

    王偉廷 評(píng)論0 收藏0

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

0條評(píng)論

閱讀需要支付1元查看
<