__proto__,prototype,constructor

幫你完全搞懂JS中的prototype、__proto__與constructor(圖解)函數

構造器,構造函數:

一個普通函數用於建立一類對象時,就被稱做構造函數。ui

構造器知足條件:

1.在函數內部對新對象(this)的屬性進行 設置,一般是添加屬性和方法 2.構造函數能夠包含返回語句(不推薦)但必須是this,或其餘非對象類型的值

new操做符來調用一個構造函數的過程:

1. 建立一個空對象 var obj={}; 2.將這個空對象的_prop_成員指向構造函數對象的prototype成員對象 obj._prop_=CO.prototype 3.將構造函數的做用域賦值給新對象 this只想obj  CO.call(obj) 4.返回新對象obj . return obj;

__proto__(隱式原型)

對象:一個對象的隱式原型指向 構造該函數的構造函數的原型
方法:不只有proto屬性還有 原型屬性(prototype)this

__proto__ 屬性是Object.prototype 一個簡單的訪問器屬性,其中包含get和set的方法。 任何一個__proto__的存儲屬性都繼承於Object.prototype,但一個訪問屬性若是不是來源於Object.prototype就不擁有.__proto__屬性。

prototype(prototype屬性是函數所獨有的)

指向一個對象,這個對象包含全部實例共享的屬性和方法spa

constructor

原型對象又一個屬性,叫作constructor,這個屬性包含一個指針,指回原構造函數.net

function Foo(){console.log("Foo")}
let f1 = new Foo()

f1.__proto__ ==  Foo.prototype //{constructor:{...};__proto__:Object}

f1.constructor    // Foo()
Foo.constructor   // Function()

Foo.__proto__ == Function.prototype //f() {[native code]
相關文章
相關標籤/搜索