很抱歉,如果我问类似的问题,我试图更好地了解JS与JSlint以及这个/ .bind(this)如何联系到它。
我正在使用下面的3个例子。我已经弄清楚为什么示例1和3的行为方式如此。
例如2,我无法弄清楚为什么JSlint抱怨"。"在.bind(this)。
例如3,我想知道是否有办法优化它?
可以将代码复制并粘贴到http://www.jslint.com/中以查看结果。
问题是"这个"不引用窗口或对象,这就是它未定义的原因,这就是为什么它不能设置" this.c"。非常自我解释。
/*jslint devel:true, browser:true, this:true*/
/*global $, window*/
$(function () {
"use strict";
window.myApp = (function () {
this.c = "c";
this.main = function () {
console.log("MAIN ", this.c);
};
this.main();
}());
}());
[jslint]出乎意料的'。'。 (unexpected_a)
/*jslint devel:true, browser:true, this:true*/
/*global $, window*/
$(function () {
"use strict";
window.myApp = (function () {
this.b = 'b';
this.main = function () {
console.log('MAIN ', this.b);
};
this.main();
}.bind(this)());
}.bind(this));
在这种情况下,JSlint不显示任何错误/警告,执行时没有问题,并且所有对象都可以访问。
/*jslint devel:true, browser:true, this:true*/
/*global $, window*/
$(function () {
"use strict";
window.myApp = (function () {
function App() {
this.a = "a";
this.main = function () {
console.log("MAIN ", this.a);
};
}
var t = new App();
t.main();
}());
}());