JavaScript 原型(Prototype)是 JavaScript 中实现对象继承的一种机制。每个 JavaScript 对象都有一个指向其原型对象的内部链接。这个原型对象又有自己的原型,如此层层向上,直到达到 Object
构造函数的原型对象,这个原型对象的值是 null
,形成了一个原型链。
可以通过构造函数的 prototype
属性来设置或获取对象的原型。
function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function() {
console.log('Hello, my name is ' + this.name);
};
可以通过对象的 __proto__
属性(非标准,但广泛支持)或 Object.getPrototypeOf()
方法来访问一个对象的原型。
var p = new Person('Alice');
console.log(p.__proto__ === Person.prototype); // true
console.log(Object.getPrototypeOf(p) === Person.prototype); // true
当访问一个对象的属性时,JavaScript 引擎首先会在对象本身查找这个属性。如果找不到,它会沿着 __proto__
链向上查找,直到找到该属性或达到原型链的顶端(null
)。
console.log(p.name); // Alice,直接在 p 对象上找到
console.log(p.sayHello); // [Function: sayHello],在 p 的原型上找到
console.log(p.toString()); // [Function: toString],在原型链上更上层找到
prototype
属性设置。Object.create()
方法创建的对象可以指定其原型。Object.setPrototypeOf()
方法。了解 JavaScript 原型对于掌握这门语言至关重要,它不仅是实现继承的基础,也是理解对象和函数之间关系的关键。
领取专属 10元无门槛券
手把手带您无忧上云