对象原型(__proto__
)和构造函数(prototype
)原型对象里面都有一个属性 constructor
属性,它指回构造l类本身.
function Person(uname, age) {
this.uname = uname;
this.sing = function() {
console.log('我会唱歌');
}
}
var person1 = new Person('wang', 18);
var person2 = new Person('wei', 18);
person1.sing();//我会唱歌
person2.sing();//我会唱歌
当我们直接给prototype
直接赋值时,要手动添加constructor
function Person(uname, age) {
this.uname = uname;
this.sing = function() {
console.log('我会唱歌');
}
}
// Person.prototype.sing = function() {//向prototype中追加一个变量,不需要考虑`constructor`,因为本身带有
// console.log('我会唱歌');
//}
Person.prototype = {
// 如果我们修改了原来的原型对象,给原型对象赋值的是一个对象,则必须手动的利用constructor指回原来的构造函数
constructor: Star, // 手动设置指回原来的构造函数
sing: function() {
console.log('我会唱歌');
}
}
var person1 = new Person('wang', 18);
//两个方法的sing都是调用prototype.sing
person1.sing();//我会唱歌
person2.sing();//我会唱歌