那些關於 JS Prototype 的事
物件導向?Javascript 是物件導向 (OOP) 語言嗎?
原型鏈 (Prototype Chain) 與 JavaScript 的物件導向
// 創建一個原型 Dot
function Dot(x, y) {
this.x = x; this.y = y
}
// 為 Dot 建立一個實例,dotP 的原型將會是 Dot
const dotP = new Dot(1, 2); // => {x: 1, y"2}
// 利用 object.constructor.name 可以看到 dotP 的 constructor function 的名稱
console.log(dotP.constructor.name); // => 'Dot'
// 為 Dot prototype新增一個方法 printDot
Dot.prototype.printDot = function () {
return {x: this.x,y: this.y};
}
// 實用 dotP 的 printDot 方法
console.log(dotP.printDot()); // {x: 1, y: 2}
// 也可以幫 prototype 新增屬性,但通常很少這麼做
Dot.prototype.lazp = "lazplazp";但其實,JS 的物件無所不在
ES6 中的神奇語法堂
結語
Last updated