В соответствии с этим:разница JS между типами глобальных переменных
(function(window) {
window.MyClass1 = function(val) {
this.val = val;
console.log(this.val);
};
}(window));
(function() {
window.MyClass2 = function(val) {
this.val = val;
console.log(this.val);
};
}());
(function() {
this.MyClass3 = function(val) {
this.val = val;
console.log(this.val);
};
}());
(function() {
MyClass4 = function(val) {
this.val = val;
console.log(this.val);
};
}());
new MyClass1('works1');
new MyClass2('works2');
new MyClass3('works3');
new MyClass4('works4');
на jsFiddle
В чем разница между MyClass1, MyClass2, MyClass3 и MyClass4? Не все ли они привязаны к объекту окна точно так же? Какая практика и почему?
MyClass3 и MyClass4 не работают [строгий режим] (https://developer.mozilla.org/en-US/документы/Web/JavaScript/Справка/Strict_mode). – anqooqie
'MyClass3' будет привязан к' this' ссылке вызываемой функции, которая не обязательно является глобальным объектом (например, внутри модуля requirejs и т. Д.). Поэтому использование 'this' может быть сложным –
' MyClass4' возможно даже выбросить ошибку без объявления 'var' и никакого объекта для присоединения. –