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 指向的是谁呢?
1 回答
红颜莎娜
TA贡献1842条经验 获得超12个赞
从运行结果就能看出,如果fn本身就有该方法,肯定是优先调用fn内部的函数,如果fn没有就会尝试着寻找原型上的。
然后this因为你这里使用了new,所以这里的this指向的就是你的实例对象啊。具体的this指向相关情况网上很多文章都有说就不在赘述了。
新手回答,有错误的欢迎指正~~
添加回答
举报
0/150
提交
取消