function Person(){};
var xiaoming = new Person();
Person.prototype = {
constructor: Person,
sayHi: function(){
console.log('hi')
}
}
xiaoming.sayHi(); // err我看到别人重写原型对象的例子是这个,但是在慕课看到有人提问的PageSwitch.prototype={
init:function(){
}
}说是给原型对象添加方法?请问哪里不一样?
1 回答
已采纳
qq_青枣工作室_0
TA贡献446条经验 获得超754个赞
Person.prototype = { constructor: Person, sayHi: function(){ console.log('hi') } }
上面代码把Person.prototype指向到一个新的对象。
但是,在此之前的 var xiaoming = new Person(); 这个xiaoming的原型依然是指向旧的Person.prototype,不是后面那个新的Person.prototype,所以xiaoming没有sayHi这个方法。
所以,你应该直接在旧的Person.prototype上添加方法。
function Person(){}; var xiaoming = new Person(); Person.prototype.sayHi = function(){ console.log('hi') } xiaoming.sayHi();
不一样的地方就在于,在修改Person.prototype之前,已经new创建的对象都可以使用新增的方法。
如果,你把Person.prototype直接等于一个新的对象,那之前new创建的对象就不能使用新增的方法。
添加回答
举报
0/150
提交
取消