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

資訊專欄INFORMATION COLUMN

prototype與__proto__

yanwei / 855人閱讀

摘要:對(duì)象的屬性的方法屬性為對(duì)象所屬的那一類所共有。對(duì)象原型鏈通過屬性向上尋找。為指定之外的原始類型值是無效的。構(gòu)造函數(shù)模式的繼承如果沒有明確指定,通過構(gòu)造函數(shù)創(chuàng)建的對(duì)象的屬性值為構(gòu)造函數(shù)的屬性。

對(duì)象的 prototype 屬性的方法、屬性為對(duì)象所屬的那一“類”所共有。對(duì)象原型鏈通過 __proto__ 屬性向上尋找。
__proto__ 指定 null 之外的原始類型(Number, String, Boolean, undefined, Symbol)值是無效的。
通過構(gòu)造函數(shù)或者 {} 方式創(chuàng)建的對(duì)象的 prototype 屬性默認(rèn)為 undefined

{} 的繼承
var a = {
  x: 10,
  calculate: function (z) {
    return this.x + this.y + z;
  }
};
 
var b = {
  y: 20,
  __proto__: a
};
 
var c = {
  y: 30,
  __proto__: a
};
 
// call the inherited method
b.calculate(30); // 60
c.calculate(40); // 80

如果沒有明確指定,那么 __proto__ 默認(rèn)為 Object.prototype,而Object.prototype 自身也有 __proto__ ,值為 null,是原型鏈的終點(diǎn)。

If a prototype is not specified for an object explicitly, then the default value for __proto__ is taken — Object.prototype. Object Object.prototype itself also has a __proto__, which is the final link of a chain and is set to null.

構(gòu)造函數(shù)模式的繼承
// a constructor function
function Foo(y) {
  // which may create objects
  // by specified pattern: they have after
  // creation own "y" property
  this.y = y;
}
 
// also "Foo.prototype" stores reference
// to the prototype of newly created objects,
// so we may use it to define shared/inherited
// properties or methods, so the same as in
// previous example we have:
 
// inherited property "x"
Foo.prototype.x = 10;
 
// and inherited method "calculate"
Foo.prototype.calculate = function (z) {
  return this.x + this.y + z;
};
 
// now create our "b" and "c"
// objects using "pattern" Foo
var b = new Foo(20);
var c = new Foo(30);
 
// call the inherited method
b.calculate(30); // 60
c.calculate(40); // 80
 
// let"s show that we reference
// properties we expect
 
console.log(

  b.__proto__ === Foo.prototype, // true
  c.__proto__ === Foo.prototype, // true
 
  // also "Foo.prototype" automatically creates
  // a special property "constructor", which is a
  // reference to the constructor function itself;
  // instances "b" and "c" may found it via
  // delegation and use to check their constructor
 
  b.constructor === Foo, // true
  c.constructor === Foo, // true
  Foo.prototype.constructor === Foo, // true
 
  b.calculate === b.__proto__.calculate, // true
  b.__proto__.calculate === Foo.prototype.calculate // true
  
);

如果沒有明確指定,通過構(gòu)造函數(shù)創(chuàng)建的對(duì)象的 __proto__ 屬性值為構(gòu)造函數(shù)的 prototype 屬性。

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

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

相關(guān)文章

  • 傻傻分不清的__proto__prototype

    摘要:今天同事小英童鞋問了我一個(gè)問題小英童鞋認(rèn)為的原型對(duì)象是,所以會(huì)繼承的屬性,調(diào)用相當(dāng)于調(diào)用,但結(jié)果不是一個(gè)方法。構(gòu)造函數(shù)創(chuàng)建對(duì)象實(shí)例函數(shù)有兩個(gè)不同的內(nèi)部方法和。如果不通過關(guān)鍵字調(diào)用函數(shù),則執(zhí)行函數(shù),從而直接執(zhí)行代碼中的函數(shù)體。 今天同事小英童鞋問了我一個(gè)問題: function Foo(firstName, lastName){ this.firstName = firstNam...

    YancyYe 評(píng)論0 收藏0
  • JavaScript中__proto__prototype的關(guān)系

    摘要:了解中原型以及原型鏈只需要記住以下點(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ì)象的__p...

    justjavac 評(píng)論0 收藏0
  • __proto__prototype的理解

    這篇文章主要 解決的問題 是:什么是__proto__?什么是prototype?他們的關(guān)系是什么?在原型鏈中扮演什么角色? proto和prototype prototype是函數(shù)的一個(gè)屬性,在定義構(gòu)造函數(shù)的時(shí)候自動(dòng)創(chuàng)建,它指向函數(shù)的原型,被 __proto__指向。這個(gè)原型對(duì)象里包含著自定義的方法屬性。 __proto__是對(duì)象的內(nèi)部屬性,它指向構(gòu)造器的prototype,對(duì)象依賴它來進(jìn)...

    tommego 評(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
  • 原型鏈一:原型原型鏈

    摘要:說白了,原型就是構(gòu)造函數(shù)用來構(gòu)造新實(shí)例的模板對(duì)象。什么是原型鏈先回答什么是原型。例如這個(gè)原型的原型就是這個(gè)構(gòu)造函數(shù)的,既這個(gè)原型對(duì)象。這些原型對(duì)象通過像鏈子一樣連起來,就叫做原型鏈。 原型鏈初步學(xué)習(xí) 這篇博客只是我初步理解原型鏈的一個(gè)個(gè)人學(xué)習(xí)筆記,寫的比較粗略,且有的地方可能理解錯(cuò)誤. 更多更專業(yè)的關(guān)于原型鏈的解釋請(qǐng)看JavaScript深入之從原型到原型鏈和阮一峰的博客:Javas...

    MudOnTire 評(píng)論0 收藏0
  • JS 原型及原型鏈學(xué)習(xí)

    摘要:所以繼承了對(duì)象的所有方法,當(dāng)你用時(shí),會(huì)先查一下它的構(gòu)造函數(shù)的原型對(duì)象有沒有有方法,沒查到的話繼續(xù)查一下的原型對(duì)象有沒有這個(gè)方法。 普通函數(shù)與構(gòu)造函數(shù)的區(qū)別 在命名規(guī)則上,構(gòu)造函數(shù)一般是首字母大寫,普通函數(shù)遵照小駝峰式命名法。 在函數(shù)調(diào)用的時(shí)候: function fn() { } 構(gòu)造函數(shù):1. new fn( ) 2 .構(gòu)造函數(shù)內(nèi)部會(huì)...

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

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

0條評(píng)論

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