14.3 The prototype Attribute

 เป็น attribute ไม่ใช่ property

วิธีสร้าง

Prototype

Object literal

Object.prototype

new

prototype property ของ constructor

Object.create()

arg แรกที่ส่งให้ function



ใช้ Object.getPrototypeOf() ในการเข้าถึง

Object.getPrototypeOf({})      // => Object.prototype
Object.getPrototypeOf([])      // => Array.prototype
Object.getPrototypeOf(()=>{})  // => Function.prototype

ใช้ __proto__  property ในการเข้าถึง (deprecated แต่ยังอยู่ใน standard) 
property นี้สามารถอ่านและเขียนได้

let p = {z: 3};
let o = {
    x: 1,
    y: 2,
    __proto__: p
};
o.z  // => 3: o inherits from p

ใช้ isPrototypeOf()  หรือ instanceof ในการเช็ค prototype

let p = {x: 1};                   // Define a prototype object.
let o = Object.create(p);         // Create an object with that prototype.
p.isPrototypeOf(o)                // => true: o inherits from p
Object.prototype.isPrototypeOf(p) // => true: p inherits from Object.prototype
Object.prototype.isPrototypeOf(o) // => true: o does too

ใช้ Object.setPrototypeOf() เปลี่ยน prototype

let o = {x: 1};
let p = {y: 2};
Object.setPrototypeOf(o, p); // Set the prototype of o to p
o.y      // => 2: o now inherits the property y
let a = [1, 2, 3];
Object.setPrototypeOf(a, p); // Set the prototype of array a to p
a.join   // => undefined: a no longer has a join() method



Comments

Popular posts from this blog

15.8.4 การวาดลงบน cavas

15.8.3 Graphics Attributes

Class ใน JavaScript, การสร้าง class ด้วย keyword class