Я новичок в js, и меня озадачил следующий код:
Foo = function(arg) {
this.arg = arg;
};
Foo.prototype = {
init: function () {
var f = function () {
alert("current arg: " + this.arg); // am expecting "bar", got undefined
}
f();
}
};
var yo = Foo("bar");
yo.init();
Я ожидал получить "current arg: bar", но получил "current arg: undefined". Я заметил, что, сначала скопировав this.arg в "нормальную" переменную и указав эту переменную в закрытии, работает:
Foo.prototype = {
init: function () {
var yo = this.arg;
var f = function () {
alert("current arg: " + yo); }
f();
}
};
Я что-то делаю не так, получил неверные ожидания, или он попадает в один из js WTF?