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

資訊專欄INFORMATION COLUMN

JavaScript中__proto__與prototype的關(guān)系

justjavac / 1249人閱讀

摘要:了解中原型以及原型鏈只需要記住以下點(diǎn)即可對(duì)象都有屬性,指向構(gòu)造函數(shù)的構(gòu)造函數(shù)函數(shù)都有屬性,指向構(gòu)造函數(shù)的原型對(duì)象的內(nèi)置構(gòu)造函數(shù)可知所有的構(gòu)造函數(shù)都繼承于甚至包括根構(gòu)造器及自身。

了解JavaScript中原型以及原型鏈只需要記住以下2點(diǎn)即可

對(duì)象都有__proto__屬性,指向構(gòu)造函數(shù)的prototype

構(gòu)造函數(shù)函數(shù)都有prototype屬性,指向構(gòu)造函數(shù)的原型

1、對(duì)象的__proto__

內(nèi)置構(gòu)造函數(shù)

Number.__proto__ === Function.prototype  // true
Boolean.__proto__ === Function.prototype // true
String.__proto__ === Function.prototype  // true
Object.__proto__ === Function.prototype  // true
Function.__proto__ === Function.prototype // true
Array.__proto__ === Function.prototype   // true
RegExp.__proto__ === Function.prototype  // true
Error.__proto__ === Function.prototype   // true
Date.__proto__ === Function.prototype    // true

可知所有的構(gòu)造函數(shù)都繼承于Function.prototype , 甚至包括根構(gòu)造器Object及Function自身。所有構(gòu)造器都繼承了Function.prototype的屬性及方法,如length、call、apply、bind等。

既然所有的構(gòu)造器都來自于Function.prototype, 那么Function.prototype 是什么呢?

Object.prototype.toString.call(Function.prototype)

"[object Function]"

Function.prototype();
 //undefined

Function.prototype 是函數(shù),是不是很意外!!!

既然 Function.prototype 是函數(shù),那么它就是 Function 的實(shí)例,然而并不是這樣的!!!

Function.prototype.__proto__ === Function.prototype // false

Function.prototype.__proto__ === Object.prototype // true

如何理解 Function.prototype 不是 Function 實(shí)例的怪異行為呢?解決怪異行為的根本方法是讓它顯得不那么怪異,看下面代碼。

Object.prototype.toString.call(Number.prototype)
"[object Number]"

Number.prototype.__proto__ === Number.prototype // false
Number.prototype.__proto__ === Object.prototype // true

Object.prototype.toString.call(String.prototype)
"[object String]"

String.prototype.__proto__ === String.prototype // false
String.prototype.__proto__ === Object.prototype // true

Object.prototype.toString.call(Array.prototype)
"[object Array]"

Number.prototype.__proto__ === Array.prototype // false
Number.prototype.__proto__ === Object.prototype // true

簡(jiǎn)單理解:內(nèi)置構(gòu)造函數(shù)的數(shù)據(jù)類型是對(duì)應(yīng)的構(gòu)造函數(shù),但不是其對(duì)應(yīng)構(gòu)造函數(shù)的實(shí)例,而是Object的實(shí)例。

2、函數(shù)的prototype

構(gòu)造函數(shù)函數(shù)都有prototype屬性,指向構(gòu)造函數(shù)函數(shù)的原型,原型有constructor屬性,指向構(gòu)造函數(shù)函數(shù)

構(gòu)造函數(shù)

Number.prototype.constructor === Number
// true

Function.prototype.constructor === Function
//true

Object.prototype.constructor === Object
true

普通函數(shù)

function wang(){};

wang.prototype.constructor === wang

//true
關(guān)系圖

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

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

相關(guān)文章

  • 講清楚之 javascript原形

    摘要:構(gòu)造函數(shù)和實(shí)例都通過屬性指向了原形。代碼示例是構(gòu)造函數(shù)的實(shí)例的屬性與的屬性保存的值相等,即他們指向同一個(gè)對(duì)象原形。 講清楚之javascript原型 標(biāo)簽: javascript javascript 中原形是一個(gè)比較難于理解的概念。javascript 權(quán)威指南在原形這一章也花了大量的篇幅進(jìn)行介紹,也許你已經(jīng)讀過javascript 權(quán)威指南,或者已經(jīng)是讀第N篇了,然而這篇文章的目...

    高勝山 評(píng)論0 收藏0
  • 深入學(xué)習(xí)js之——原型和原型鏈

    摘要:我們用一張圖表示構(gòu)造函數(shù)和實(shí)例原型之間的關(guān)系好了構(gòu)造函數(shù)和實(shí)例原型之間的關(guān)系我們已經(jīng)梳理清楚了,那我們?cè)趺幢硎緦?shí)例與實(shí)例原型,也就是或者和之間的關(guān)系呢。 開篇: 在Brendan Eich大神為JavaScript設(shè)計(jì)面向?qū)ο笙到y(tǒng)的時(shí)候,借鑒了Self 和Smalltalk這兩門基于原型的語(yǔ)言,之所以選擇基于原型的面向?qū)ο笙到y(tǒng),并不是因?yàn)闀r(shí)間匆忙,它設(shè)計(jì)起來相對(duì)簡(jiǎn)單,而是因?yàn)閺囊婚_始B...

    FingerLiu 評(píng)論0 收藏0
  • 深入學(xué)習(xí)js之——原型和原型鏈

    摘要:我們用一張圖表示構(gòu)造函數(shù)和實(shí)例原型之間的關(guān)系好了構(gòu)造函數(shù)和實(shí)例原型之間的關(guān)系我們已經(jīng)梳理清楚了,那我們?cè)趺幢硎緦?shí)例與實(shí)例原型,也就是或者和之間的關(guān)系呢。 開篇: 在Brendan Eich大神為JavaScript設(shè)計(jì)面向?qū)ο笙到y(tǒng)的時(shí)候,借鑒了Self 和Smalltalk這兩門基于原型的語(yǔ)言,之所以選擇基于原型的面向?qū)ο笙到y(tǒng),并不是因?yàn)闀r(shí)間匆忙,它設(shè)計(jì)起來相對(duì)簡(jiǎn)單,而是因?yàn)閺囊婚_始B...

    xialong 評(píng)論0 收藏0
  • JavaScript原型原型鏈

    摘要:每個(gè)原型對(duì)象都有一個(gè)屬性指向關(guān)聯(lián)的構(gòu)造函數(shù)為了驗(yàn)證這一說話,舉個(gè)例子。 本文共 1475 字,讀完只需 6 分鐘 一、概述 在 JavaScript 中,是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,但是 JS 本身是沒有 類 的概念,JS 是靠原型和原型鏈實(shí)現(xiàn)對(duì)象屬性的繼承。 在理解原型前,需要先知道對(duì)象的構(gòu)造函數(shù)是什么,構(gòu)造函數(shù)都有什么特點(diǎn)? 1. 構(gòu)造函數(shù) // 構(gòu)造函數(shù) Person() ...

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

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

0條評(píng)論

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