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

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

一個this的問題,瀏覽器和node的差異

一個this的問題,瀏覽器和node的差異

哆啦的時光機 2018-10-18 13:11:35
這個問題的代碼var fullname = 'John Doe';var obj = {  fullname: 'Colin Ihrig',  prop: {    fullname: 'Aurelio De Rosa',    getFullname: function () {      return this.fullname;    }  },  getFullname () {    return this.fullname;  }};console.log(obj.prop.getFullname());  //Aurelio De Rosaconsole.log(obj.getFullname()); //Colin Ihrigvar test = obj.prop.getFullname;// (這里瀏覽器 里面是對的, 但是node 這邊 是怎么處理了么。。this為global,但是fullname 并沒有上global)//當前文件全局的fullname 如果沒寫var 可以,但是寫了var 就是undefinedconsole.log(test());//John Doe上面的注釋是我的思路,為什么瀏覽器 按照我的走了,但是node沒有,最后的調用為undefined,是不是模塊這邊的原因 還是啥的。。。有點沒有頭緒。。
查看完整描述

1 回答

?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

執行 test() 得到 this.fullname(this指向當前的全局變量), 在瀏覽器var fullname = 'John Doe' ,fullname掛載在window。但在node用var聲明是屬于局部的模塊變量,不加var才是全局變量,或global.fullname也是全局,所以就造成了兩個環境下的差距(在node的REPL運行你的代碼應該也是和瀏覽器一樣的)。


查看完整回答
反對 回復 2018-11-20
  • 1 回答
  • 0 關注
  • 563 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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