文章目录
一、原型
简介
- 每个函数对象都有一个
prototype
属性,默认指向一个空的Object
实例对象(即称为原型对象) - 原型对象中有一个
constructor
属性,它指向当前的函数对象
代码示例:
function Test() {
}
Test.prototype.say = () => {
console.log('Say Hello');
}
const t1 = new Test();
const t2 = new Test();
Test.prototype.say = () => {
console.log('Say Hello');
}
console.log("原型对象:", Object.keys(Test.prototype)); // [],说明函数的原型对象是一个空对象
console.log(Test.prototype.constructor === test); // true,说明 原型对象的 constructor 属性,它指向当前的函数对象
显式原型和隐式原型
- 每个函数都有一个
prototype
属性,即显式原型 - 每个实例对象都有一个
__proto__
属性,即隐式原型 - 实例对象的隐式原型的值等于对应函数的显式原型的值
function Test() {
}
const t1 = new Test();
console.log(Test.prototype); // 一个空对象,包含 __proto__ 和 constructor 属性(指向 Test)
console.log(t1.__proto__); // 一个空对象,包含 __proto__ 和 constructor 属性(指向 Test)
console.log(Test.prototype