Не выходит получить объект из функции
Хочу чтоб при нажатии на генерируемую скриптом кнопку выводилось приветствие с именем, но объект при этом куда-то теряется, и из функции 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, время: 23:48. |