Причина, по которой он не работает, состоит в том, что this
в контексте функции onclick
отличается от this
в контексте n
функции / "класса". Если вы хотите, чтобы this
внутри функции было эквивалентно this
из класса, вам необходимо связать this
с функцией.
Привязка - это способ изменения области действия функции. По сути, если вы привязываетесь к функции, вы заменяете переменную this
, чтобы указывать на что-то другое. Вы можете прочитать больше о связывании в Javascript в этой альтернативной статье .
Если вы используете, например, прототип , вы можете сделать что-то вроде:
function n()
{
var make = function()
{
...
a.onclick = function() { this.add_button() }.bind(this);
...
}
}
Который связал бы класс n
this
с функцией onclick, таким образом давая желаемый эффект.