猿问

一个构造函数里面有自己的方法和原型方法,两个方法优先调用哪个?

function fn(){

this.a = 0;console.log(this);this.b = function(){console.log(this.a);
}

}

fn.prototype = {

b:function(){this.a = 20;console.log(this.a);
},c:function(){this.a = 30;console.log(this.a);
}

}

var myfn = new fn();
myfn.b();
myfn.c();

这段代码输出的是0 和 20;
为什么后面的a = 20没有将前面的a = 0覆盖呢?
还有fn里面的this 指向的是谁呢?


噜噜哒
浏览 767回答 1
1回答

红颜莎娜

从运行结果就能看出,如果fn本身就有该方法,肯定是优先调用fn内部的函数,如果fn没有就会尝试着寻找原型上的。然后this因为你这里使用了new,所以这里的this指向的就是你的实例对象啊。具体的this指向相关情况网上很多文章都有说就不在赘述了。新手回答,有错误的欢迎指正~~
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答