Q_BASIC
Хранитель порядка
- Регистрация
- 30 Ноя 2013
- Сообщения
- 516
- Реакции
- 1.240
- Автор темы
- #1
Здравствуйте
Решил свой класс для localStorage сделать.
Код:
В одной функции this содержит объект ls (сам объект), а в другой уже window.
Как во втором случае обращаться к "себе"? И почему так происходит?
В коде искать эти места (там не понятно
В консоли:
Решил свой класс для localStorage сделать.
Код:
Код:
function supports_html5_storage() {
try {
return 'localStorage' in window && window['localStorage'] !== null;
} catch (e) {
return false;
}
}
if(!supports_html5_storage()){
var ls = false;
}else{
var ls = {
'events': {},
'storage': window.localStorage,
'set': function(key, value){
return this.storage.setItem(key, value);
},
'get': function(key){
return this.storage.getItem(key);
},
'on': function(key, callback){
console.log('This in function "ON": ');
console.log(this); // Тут this это объект ls, как, я думаю, и должно быть
this.events[key] = callback;
},
'off': function(key){
this.events.key = function(){};
},
'callback': function(event){
try{
console.log('This in function "CALLBACK": ');
console.log(this); // А тут в this содержится объект window. Почему?
this.events[event.key]();
console.log('Storage event \''+event.key+'\' called');
} catch (e) {
console.log('Storage event \''+event.key+'\' not defined. Error: '+e.message);
}
}
};
if (addEventListener) {
addEventListener("storage", ls.callback, false);
} else {
attachEvent("onstorage", ls.callback);
}
}
В одной функции this содержит объект ls (сам объект), а в другой уже window.
Как во втором случае обращаться к "себе"? И почему так происходит?
В коде искать эти места (там не понятно
Код:
console.log(this); // Тут this это объект ls, как, я думаю, и должно быть
console.log(this); // А тут в this содержится объект window. Почему?
В консоли:
Код:
This in function "ON":
Object {events: Object, storage: Storage, set: function, get: function, on: function…}
Код:
This in function "CALLBACK":
Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}
Storage event 'foo' not defined. Error: Cannot read property 'foo' of undefined
Последнее редактирование: