function student(name, age)
student.prototype =
}var zs = new student('張三', 18)
我們先來看一張圖
在這張圖里student建構函式的prototype指向student原型物件,student原型物件又指向student建構函式,zs物件.__proto__指向的是student原型物件。這就是建構函式、例項和原型物件三角關係。
那麼只要是個物件,就有__proto__這個屬性,那麼student原型物件又指向誰呢?
可以列印一下console.log(student.prototype.__proto__)
可以看到指向的是object原型物件,這個原型物件是由object建立而來的。
那麼object原型物件的__proto__又指向誰呢?
console.log(object.prototype.__proto__) // null
輸出的是null,所以指向的是null,這就構成了原型鏈。
所以在訪問物件成員的時候順序應該是先訪問zs物件是否存在這個成員,如果沒有,就到student原型上檢視是否有這個成員,如果沒有,就到object原型上檢視是否有這個成員,如果再沒有,就返回null
建構函式和原型
new的時候做的的4個事情 1.在記憶體中建立乙個新的空物件 2.讓this指向這個新物件 3.執行建構函式裡的 給這個新物件 新增屬性和方法 4.返回這個新物件 靜態成員與例項成員 靜態成員 由構造本身建立的成員 只能由建構函式本身來訪問 例項成員 在建構函式內部建立的物件成員為例項成員 只能由例...
javascript原型和原型鏈,建構函式和例項
原型 建構函式 就是工廠,原型的例項就是工廠按照圖紙生成的工具 比如汽車 原型鏈 隱式的 就是生成的工具所具有的功能,而功能是工具的屬性,生成什麼樣的工具是由工廠 建構函式 決定的,圖紙是有工廠和客戶共同決定的 var ca ctory function options this.stop func...
js建構函式和原型
建立物件的方式 1,物件字面量 var obj1 2,new object var obj2 new object 3,利用建構函式建立物件 建構函式 利用建構函式 可以建立很多個物件 建構函式,把物件中公共屬性和方法抽出來,放在建構函式裡,通過new建立不同的物件 function star na...