14.3 The prototype Attribute
เป็น attribute ไม่ใช่ property
ใช้ 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
Post a Comment