var a=1;
var fun=function(){
var a=2;
this.a=3;
this.fn=function(){
return a;
}
}
fun.a=4;
fun_proto_.fn=5;
alert(fun.fn)这个输入出来的结果是什么呢?说明下原因。求大牛帮忙~
1 回答
已采纳
李晓健
TA贡献1036条经验 获得超461个赞
就是5呀;
首先,你定义了一个方法 fun ,但是你在后面没有new 操作符,也没有调用方法 所以方法里面是什么,都无所谓了,那么这个fun 就和一个普通对象差不多,然后你又让他的a属性等于4,这后面个也没有用到,也无所谓了,然后你又设置了他的__proto__.fn,这个__proto__就是原型, 也就是说你在fun的原型上加了一个 fn的属性,值为5。最后你取了fun的fn的值,也就是fun.fn 。这个先在会fun自身上面去找fn,发现fun上并没有fn,就去fun的原型链上去找就是去fun的__proto__上面去找,就找到你设置的5,所以就弹出来了一个5。这样希望你能看懂。
你的代码应该有两处错误,
// fun 后面应该有一个点,你没写 proto两边都是两条_,你都写的是一条 fun.__proto__.fn = 5
如果你的问题已解决,请记得采纳答案!
添加回答
举报
0/150
提交
取消