Я делаю расширение chrome и использует мало блоков текста. Я сделал класс, и каждый блок является экземпляром этого класса. Такой, что:JavaScript ООП и асинхронные методы из расширения Chrome api
function Block(bid){
var block = Object.create(Block.prototype);
block.title = "Default"
block.content = "";
block.bid = bid;
return block;
};
Block.prototype.setTitle = function(){
chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
this.title = tabs[0].title;
});
};
Моя проблема заключается в том, что, когда я называю SetTitle() на блоке объекта в заголовке свойство не изменяется с помощью метода; он остается в «По умолчанию». Я знаю, что это имеет какое-то отношение к синхронным и асинхронным методам, но я полностью проиграл об этом.
Любая помощь будет оценена!
'this.title' означает свойство закрытия, а не' Block', из того, что я могу сказать. Проверьте, не связаны ли с этим вопросы, связанные с этим, что кажется. – Mjh
@mjh Если бы я должен был делать 'Block.prototype.setTitle = function() {this.title =" New ";}' все работает отлично – commanderCool
Да, потому что это '' '' '' '' 'принадлежит' Block.prototype.setTitle' , У вас есть два закрытия, а не один. Поэтому последнее закрытие 'this' должно быть ограничено, чтобы принадлежать внешнему. – Mjh