JavaScript 原型链揭秘:任何对象都从 Object 继承
2024-02-06 13:56:33
万物皆对象,皆承 Object
在 JavaScript 中,一切皆对象,包括原始值。当我们使用 new
创建对象时,JavaScript 就会在幕后创建一个新的对象,并将该对象的原型设置为 Object.prototype
。这意味着,该对象可以访问 Object.prototype
中定义的所有属性和方法。
我们以一个简单的示例来说明:
const person = {
name: 'John Doe',
age: 30
};
当我们创建 person
对象时,JavaScript 就会在幕后创建一个新的对象,并将该对象的原型设置为 Object.prototype
。这意味着,person
对象可以访问 Object.prototype
中定义的所有属性和方法,包括 toString()
、valueOf()
和 hasOwnProperty()
等。
我们可以使用 Object.getPrototypeOf()
方法来获取对象的原型:
console.log(Object.getPrototypeOf(person));
输出结果为:
Object {}
这意味着,person
对象的原型是 Object.prototype
。
原型链上的层层继承
每个对象都有一个原型,而原型的原型又有一个原型,如此层层向上,最终都会到达 Object.prototype
。这种层层继承的关系称为原型链。
我们可以使用 __proto__
属性来访问对象的原型。例如,我们可以使用 person.__proto__
来访问 person
对象的原型:
console.log(person.__proto__);
输出结果为:
Object {}
这意味着,person
对象的原型是 Object.prototype
。
为什么任何对象最终都继承了 Object 对象?
因为 Object.prototype
是原型链的根节点,任何对象都必须通过原型链最终到达 Object.prototype
。因此,任何对象都继承了 Object.prototype
中定义的所有属性和方法。
结语
在 JavaScript 中,任何对象都继承了 Object
对象,这并非一句空话。通过原型链的层层继承,任何对象都可以访问 Object.prototype
中定义的所有属性和方法。这使得 JavaScript 语言更加灵活和强大。