亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于js的面試題

關于js的面試題

青黃不一 2017-07-05 14:36:13
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



如果你的問題已解決,請記得采納答案!





查看完整回答
2 反對 回復 2017-07-05
  • 青黃不一
    青黃不一
    老師,您好!如果有new,那么fun函數里面才會有意義,才能用上,是這樣子嗎?(大部分意思是能看懂得)
  • 李曉健
    李曉健
    不一定非要new 直接調用的話,方法里面的代碼也會執行的呀。
  • 1 回答
  • 0 關注
  • 1150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號