Не выходит получить объект из функции
Хочу чтоб при нажатии на генерируемую скриптом кнопку выводилось приветствие с именем, но объект при этом куда-то теряется, и из функции say_hello уже не удается получить имя
function main() {this.name = "Max";}
//Создает кнопку
main.prototype.create_button = function(){
var body = document.getElementsByTagName('body')[0];
var button= document.createElement("INPUT");
button.onclick = this.say_hello;
//button.onclick = hello.say_hello;//Так работает как надо
}
main.prototype.say_hello = function(){alert('hello '+this.name);}//Не работает так как this здесь возвращает вместо объекта input, при условии если функция динамически вешается на кнопку
var hello = new main();
hello.create_button();
|
Потому что нужно передавать контекст.
button.onclick = this.say_hello.bind(this); |
function Main() {this.name = "Max";}
//Создает кнопку
Main.prototype.create_button = function(){
var body = document.getElementsByTagName('body')[0];
var button= document.createElement("INPUT");
button.onclick = this.say_hello.bind(this);
//button.onclick = hello.say_hello;//Так работает как надо
}
Main.prototype.say_hello = function(){alert('hello '+this.name);}//Не работает так как this здесь возвращает вместо объекта input, при условии если функция динамически вешается на кнопку
var hello = new Main();
hello.create_button();
Имена классов следует называть с большой буквы. |
Замечательно, спасибо большое, почему я до сих пор не знал про bind, отличная штука :)
|
| Часовой пояс GMT +3, время: 14:19. |