Как избавиться от this
Изучаю Javascript, помогите разобраться. Поместил свой код в namespace
и теперь весь код засорен указанием "this." перед каждой переменной. Читаемость кода стала намного хуже, чем это было у меня до заворачивания в namespace. Можно как-то избавиться от этого? Не знаю, может быть в начале функции вызвать какую-нибудь функцию с указанием области действия...
this.myNameSpace = this.myNameSpace || {};
(function () {
function MyApp() {
this.init();
}
MyApp.prototype = {
displayStatus: null
MDNG: [
"_1ss",
"_2nn",
"_3rr",
"_4ee",
"_5tt",
"_6ii"
],
mdng: 0,
init: function () {
this.displayStatus = "Some text here";
this.LoadMan("loman" + this.LDNG[this.ldng] + ".json", "himan" + this.LDNG[this.ldng] + ".json");
return this;
}
LoadMan: function () {
this.displayStatus = "Some text here";
this.LoadMan("srex" + this.MDNG[this.mdng] + ".json", "srex2" + this.MDNG[this.mdng] + ".json");
}
myNameSpace.MyApp = MyApp;
}());
|
Это не namespace, а замыкание, причём с помощью анонимной функции)))
И почитайте про bind, call и apply. |
Ок, спасибо)
Т.е. bind, call и apply позволят избавиться от избыточного использования this? |
RFWire,
Что-то я видимо не проснулся когда писал, по сути это не поможет)) Либо через prototype, либо return {a:'',b:''} |
С with можно это сделать
Foo=function(){this.init()}
Foo.prototype={
foo: undefined,
bar: undefined,
init: function(){
with(this){foo=1;bar=2}
}
}
foo=new Foo
console.log(foo)
но, если плохо представляешь, как оно работает, лучше не использовать. |
почитай о this http://frontender.info/demystifying-this-in-javascript/
|
caetus,
Параша по твоей ссылке. >>является ссылкой на родительский объект. this никогда ни на что не ссылается, он динамически связывается. Это обычное, дефолтное поведение для переменных, в языках, где по дефолту динамическое связывание. Автор сам ННП. |
В глобальном контексте выполнения (за пределами каких-либо функций), this ссылается на глобальный объект вне зависимости от использования в строгом или нестрогом режиме.
https://developer.mozilla.org/ru/doc...Operators/this |
>>является ссылкой на родительский объект.
Когда функция вызывается как метод объекта, используемое в этой функции ключевое слово this принимает значение объекта, по отношению к которому вызван метод. принимает !== ссылается ? |
Цитата:
|
| Часовой пояс GMT +3, время: 03:53. |