幫你完全搞懂JS中的prototype、__proto__與constructor(圖解)函數
一個普通函數用於建立一類對象時,就被稱做構造函數。ui
1.在函數內部對新對象(this)的屬性進行 設置,一般是添加屬性和方法 2.構造函數能夠包含返回語句(不推薦)但必須是this,或其餘非對象類型的值
1. 建立一個空對象 var obj={}; 2.將這個空對象的_prop_成員指向構造函數對象的prototype成員對象 obj._prop_=CO.prototype 3.將構造函數的做用域賦值給新對象 this只想obj CO.call(obj) 4.返回新對象obj . return obj;
對象:一個對象的隱式原型指向 構造該函數的構造函數的原型
方法:不只有proto屬性還有 原型屬性(prototype)this
__proto__ 屬性是Object.prototype 一個簡單的訪問器屬性,其中包含get和set的方法。 任何一個__proto__的存儲屬性都繼承於Object.prototype,但一個訪問屬性若是不是來源於Object.prototype就不擁有.__proto__屬性。
指向一個對象,這個對象包含全部實例共享的屬性和方法spa
原型對象又一個屬性,叫作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]