在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ webpack打包后,導致js文件中的this失效,怎么解決?

webpack打包后,導致js文件中的this失效,怎么解決?

webpack打包js文件會改變里面的變量嗎?這是webpack的版本問題導致的嗎?求大神指導。

打包之前的部分代碼如下:**

var page = {
    data : {
        date : '2018/1/1 00:00:00',  
        },        
    loadTime : function(){
        var  _this = this; //這里定義了_this
        var current = Date();
        var seconds = (Date.parse(current)-Date.parse(_this.data.date))/1000;//在這引用了_this.data.date
        timeObject.days   = Math.floor(seconds/(3600*24));
        }
    }

打包后page里的loadtime函數(shù)變成了這樣(_this不見了):

loadTime: function () {
      e = Date(),
      n = (Date.parse(e) - Date.parse(this.data.date)) / 1000;
      t.days = Math.floor(n / 86400),
      }

瀏覽器報錯:

clipboard.png

回答
編輯回答
九年囚

_this不見了的原因應該是@gaoryrt說的那樣。

你對this的概念可能理解有誤。
js中this指向的最近調(diào)用它的對象。
page看似一個對象,實際上它只是一個變量名,它的值才是對象。最近調(diào)用它的值的,外層沒有對象的話一般都是window,Date.parse接收的是一個傳參,還沒有形成一個局部的作用域,所以你這個this指向的是window,有沒有_this都沒影響。

2018年4月20日 12:53
編輯回答
別硬撐

你可以試試執(zhí)行打包之前的文件,應該也存在異常,你這里的問題應該不是替不替換this;而是你的this本身就存在問題

2017年6月30日 22:37
編輯回答
命多硬

這里不見的原因是打包時自動把沒用的代碼合并了
你這里先定義了一次 _this 然后也只使用了一次,于是自動合并成了結果那樣
要達到目的的話,可能你需要一個閉包,把執(zhí)行時上下文給保存下來,達到 _this 的作用

2017年1月17日 21:17