介绍
在每个原型对象里面都有个constructor属性,该属性指向该原型对象的构造函数。
constructor的使用场景: 如果构造函数有多个公共方法,可以把这些方法写到一个对象中,然后给原型对象赋值。但是这样一来,就会覆盖构造函数原型对象原来的内容,导致修改后的原型对象的constructor属性就不再指向当前构造函数了。此时,就可以在修改后的原型对象中,添加一个constructor属性,用来指向原来的构造函数。
示例
查看prototype中的constructor属性
Document
function Star() {
}
const star1 = new Star()
console.log(Star.prototype)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3b385a3747c84e6ca16da8dbd285092d.png)
constructor属性指向原型的构造函数
Document
function Star() {
}
const star1 = new Star()
// console.log(Star.prototype)
console.log(Star.prototype.constructor === Star)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7cb05afa146e475db7f1a49958319afa.png)
constructor的典型使用场景
Document
function Star() {
}
Star.prototype = {
// 重新指回创造这个原型对象的构造函数
constructor: Star,
sing: function () {
console.log('唱歌')
},
dance: function () {
console.log('跳舞')
},
}
console.log(Star.prototype)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dd096577d09f4c83afdafb14d380329a.png)
|