摘要:對(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)。
構(gòu)造函數(shù)模式的繼承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.
// 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
摘要:今天同事小英童鞋問了我一個(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...
摘要:了解中原型以及原型鏈只需要記住以下點(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...
這篇文章主要 解決的問題 是:什么是__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)...
摘要:在創(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)原型和...
摘要:說白了,原型就是構(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...
摘要:所以繼承了對(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ì)...
閱讀 2398·2021-09-22 16:01
閱讀 3164·2021-09-22 15:41
閱讀 1182·2021-08-30 09:48
閱讀 497·2019-08-30 15:52
閱讀 3335·2019-08-30 13:57
閱讀 1720·2019-08-30 13:55
閱讀 3671·2019-08-30 11:25
閱讀 767·2019-08-29 17:25