Как избавиться от 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, время: 05:05. |