返回
原型对象、原形属性和构造函数的三角关系
前端
2023-11-03 01:30:51
JavaScript中的原型
在JavaScript中,每个对象都有一个原型对象,它是一个特殊的对象,包含了该对象的所有属性和方法。原型对象可以通过对象的prototype属性访问。
const obj = {
name: "John Doe",
age: 30,
};
console.log(obj.prototype); // undefined
如上例所示,对象的prototype属性为undefined,这是因为JavaScript中的对象没有直接的原型对象。但是,我们可以通过Object.getPrototypeOf()方法来获取对象的原型对象。
const obj = {
name: "John Doe",
age: 30,
};
console.log(Object.getPrototypeOf(obj)); // {}
如上例所示,对象的原型对象是一个空对象。这是因为JavaScript中的对象默认继承自Object对象,而Object对象的原型对象是null。
JavaScript中的原形属性
对象的原形属性是指原型对象中的属性。这些属性可以通过对象的prototype属性访问。
const obj = {
name: "John Doe",
age: 30,
};
console.log(obj.prototype.toString); // function toString() { ... }
如上例所示,对象的prototype属性包含了一个toString方法。这个方法是Object对象的原形属性,它被继承到了obj对象中。
JavaScript中的构造函数
构造函数是用来创建对象的函数。构造函数的名称通常以大写字母开头。
function Person(name, age) {
this.name = name;
this.age = age;
}
如上例所示,Person是一个构造函数,它接受两个参数:name和age。当我们使用new运算符调用构造函数时,就会创建一个新的对象。
const person = new Person("John Doe", 30);
console.log(person); // { name: "John Doe", age: 30 }
如上例所示,new运算符调用Person构造函数创建了一个新的person对象。这个对象具有name和age属性,它们的值分别为"John Doe"和30。
原型、原形属性和构造函数之间的关系
原型、原形属性和构造函数之间的关系可以总结如下:
- 构造函数是用来创建对象的函数。
- 原型对象是构造函数的原型。
- 原形属性是原型对象中的属性。
- 对象通过prototype属性继承原型对象中的属性和方法。
总结
原型、原形属性和构造函数是JavaScript面向对象编程的基础知识。理解这三个概念之间的关系对于理解JavaScript的继承机制非常重要。