function fn() { this.a = 0; this.b = function() { alert(this.a) }}fn.prototype = { b: function() { this.a = 20; alert(this.a); }, c: function() { this.a = 30; alert(this.a); }}var myfn = new fn();myfn.b();myfn.c();构造函数和原型里面同样有方法b 变量为什么只有在构造函数里面有效?
1 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
因为对象 obj 属性查找的规则是:
先在对象
obj上查找,找到则直接返回该属性,结束查找在对象的原型
obj.__propo__上查找,找到则直接返回该属性,结束查找在原型的原型(原型链)上查找,找到则直接返回该属性,结束查找
重复第3步,直到原型指向
null,结束查找,返回undefined
具体这个问题:myfn.b在对象属性上找到了,不需要去原型链上查找。
添加回答
举报
0/150
提交
取消
