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函数变成了这样(_this不见了):loadTime: function () { e = Date(), n = (Date.parse(e) - Date.parse(this.data.date)) / 1000; t.days = Math.floor(n / 86400), }浏览器报错:
3 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
这里不见的原因是打包时自动把没用的代码合并了
你这里先定义了一次 _this
然后也只使用了一次,于是自动合并成了结果那样
要达到目的的话,可能你需要一个闭包,把执行时上下文给保存下来,达到 _this
的作用
皈依舞
TA贡献1851条经验 获得超3个赞
_this不见了的原因应该是@gaoryrt说的那样。
你对this的概念可能理解有误。
js中this指向的最近调用它的对象。
page看似一个对象,实际上它只是一个变量名,它的值才是对象。最近调用它的值的,外层没有对象的话一般都是window,Date.parse接收的是一个传参,还没有形成一个局部的作用域,所以你这个this指向的是window,有没有_this都没影响。
添加回答
举报
0/150
提交
取消