所以,我有这样的代码:如何减少Javascript中的内部函数变量的范围?
var exampleModule = (function() {
var example = {};
var self = this;
example.test = function() {
this.mousedown = function (e) {
self.x1 = e.offsetX;
self.y1 = e.offsetY;
};
this.mousemove = function(e) {
// do something with x1 and y1 and e.offsetX and e.offsetY
};
};
})();
我想有x1
和y1
只能example.test内作用域。有没有办法做到这一点this
或我必须做一些像example.test.x1
为每一个?目前他们的范围是整个exampleModule
,我想把它缩小到只有example.test
。
我只是有点理解整个self/that = this;
口头禅。我知道Javascript有这个bug,其中this
当一个函数中的某个函数引用全局范围时,但是当上面的例子中有3个函数时什么时候?什么是this
等于嵌套三个或四个功能下来?
*“我想让x1和y1仅在example.test范围内”*您是什么意思?你不希望他们也在'exampleModule'上? –
@ T.J.Crowder:对! –
ES6解决了以前与Js全局范围和功能范围有关的本地范围问题。要使用新功能,只需使用关键字let替换每个var关键字。假设你的变量的范围是它们被声明的地方,即它们被声明的大括号内。不幸的是,你必须使用babel或类似的代码来传输你的代码,因为浏览器不完全支持这一点。 –