猿问

请问怎么区分js 是重写原型对象还是在给原型对象添加方法?

function Person(){};
var xiaoming = new Person();
Person.prototype = {
    constructor: Person,
    sayHi: function(){
        console.log('hi')
    }
}
xiaoming.sayHi(); // err

我看到别人重写原型对象的例子是这个,但是在慕课看到有人提问的

PageSwitch.prototype={
init:function(){
}
}

说是给原型对象添加方法?

请问哪里不一样?

加油js
浏览 1557回答 1
1回答

qq_青枣工作室_0

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创建的对象就不能使用新增的方法。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答