當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
javascript --- js中prototype、__proto__、[[Propto]]、constructor的关系
生活随笔
收集整理的這篇文章主要介紹了
javascript --- js中prototype、__proto__、[[Propto]]、constructor的关系
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
首先看下面一行代碼:
function Person(name){this.name = name; } var person1 = new Person; console.log(person1.__proto__ === Person.prototype); console.log(person1.constructor === Person);控制臺打印如下:
可以看見,當(dāng)使用構(gòu)造函數(shù)(Person)構(gòu)造一個實例(person1)時,
在后臺其實生成了2種關(guān)系,
在知道了上面2種關(guān)系后,下面在看一個例子:
function P(name) {this.name = name; } P.prototype = {sayName: function () {console.log(this.name);} };var p1 = new P(); console.log(p1 instanceof Person); console.log(p1.constructor === Person); console.log(p1.constructor === Object); ---> 對于第一行的true 1.a instanceof A是指,a是A的實例 2.因為var p1 = New P() , 明顯是對的---> 對于第二行的false, 第3三行true 1.使用P.prototype進(jìn)行字面量賦值時,實際上是對P的原型進(jìn)行了重寫,而上面例子未對(P.prototype)重寫后的construcoter屬性 進(jìn)行說明 2.JavaScript默認(rèn)其為一個泛用對象Object,因此其constructor屬性指向了Object.倘若我們在對P.prototype進(jìn)行字面量賦值的同時,加上constructor屬性,使其指向P,見下例:
function P(name){this.name = name; } P.prototype = {constructor: P,sayName: function() {console.log(this.name);} } var p1 =new P("marron");console.log(p1 instanceof P) ; console.log(p1.constructor === P);
可以看見,p1.constructor指向了函數(shù)P.即可以通過實例的constructor函數(shù)找到函數(shù)P…
參考《JavaScript面向?qū)ο缶返?章
總結(jié)
以上是生活随笔為你收集整理的javascript --- js中prototype、__proto__、[[Propto]]、constructor的关系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql查询php,SQL查询或PHP?
- 下一篇: 招投标系统简介 招投标系统源码 java