可以在构造函数中重写prototype吗?
发布于 10 年前 作者 Silence-Zhang 5992 次预览 最后一次回复是 10 年前 来自 问答
在构造函数中重写了prototype,访问不了其中的方法. e.g.
function Persion(name,age,job){
this.name=name;
this.age=age;
this.job=job;
Persion.prototype={
sayName:function(){
console.log(this.name);
}
};
}
var per=new Persion('Nicolas','23','software engining');
per.sayName(); //运行时会报错,没有sayName方法
但是把Persion.prototype={...}放在构造函数外就可以访问…
4 回复
说明… new 的时候先执行
this.__protp__ = Person.prototype;,再执行Person.apply(this, arguments);… 下面这个代码可以用。。new 过一次以后Persion的prototype就是楼主想要的对象了。 第一个new函数执行的时候Person.prototype还是一个空对象 输出
btw:构造函数里重写prototype不是好思路…在prototype里面定义的函数已经能访问到this对象了。
instance哭着说,你来晚了sayName
放在外面,构造函数外面。
prototype放里面有啥意义?难道你还想if else 一下?