构造函数、实例、原型对象三者之间的关系
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//对象的原型__proto__,构造函数的原型对象prototype
function Star(name) {
this.name = name
}
// Star.prototype.sing = {
// function () {
// console.log('i can sing');
// }
// }
// 通过赋值的方式,原来的构造函数就会被替换掉,所以就需要利用constructor手动指向原来的构造函数
Star.prototype = {
constructor: Star,
sing: function () {
console.log('i can sing');
},
say: function () {
console.log('i can say');
}
}
var ldh = new Star(ldh)
console.log(Star.prototype);
console.log(ldh.__proto__);
</script>
</body>
</html>
实例对象的constructor之所以能够指向构造函数内的constructor,是因为实例对象的__proto__指向原型对象prototype,而Star原型对象prototype又指向constructor
1.只要是对象就有__proto__原型,指向原型对象
2.Star原型对象里面的__proto__原型指向的是Object.prototype