當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
javascript --- js中prototype、__proto__、[[Propto]]、constructor的关系
生活随笔
收集整理的這篇文章主要介紹了
javascript --- js中prototype、__proto__、[[Propto]]、constructor的关系
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先看下面一行代碼:
function Person(name){this.name = name; } var person1 = new Person; console.log(person1.__proto__ === Person.prototype); console.log(person1.constructor === Person);控制臺打印如下:
可以看見,當使用構造函數(Person)構造一個實例(person1)時,
在后臺其實生成了2種關系,
在知道了上面2種關系后,下面在看一個例子:
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進行字面量賦值時,實際上是對P的原型進行了重寫,而上面例子未對(P.prototype)重寫后的construcoter屬性 進行說明 2.JavaScript默認其為一個泛用對象Object,因此其constructor屬性指向了Object.倘若我們在對P.prototype進行字面量賦值的同時,加上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指向了函數P.即可以通過實例的constructor函數找到函數P…
參考《JavaScript面向對象精要》第4章
總結
以上是生活随笔為你收集整理的javascript --- js中prototype、__proto__、[[Propto]]、constructor的关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql查询php,SQL查询或PHP?
- 下一篇: javascript --- 使用语法