Я пытаюсь создать объект в javascript, который позволяет вызывать функцию всякий раз, когда произошло событие. В моей программе, когда происходит событие (идентифицированное ключом), вызывается соответствующая функция.Ссылаясь на свойства во время создания экземпляра
function Foo(dict){
this.add(dict);
this.biz = 'world';
};
//add a dictionary to the object
Foo.prototype.add = function(dict){
for(var k in dict){
//duplicate key check not needed
this[k] = function(){
dict[k]();
}
this[k].that = this;
}
};
//call an event
Foo.prototype.call = function(event){
this[event]();
};
var foo = new Foo(
{
//'event key':function(){...}
//Cannot read property 'biz' of undefined
'test':function(){alert('hello ' + this.that.biz);}
});
foo.call('test'); //expected output: hello world
Можно ли сделать систему, в которой кто-то может сделать содержимое анонимной функции в см свойства Foo, желательно в чистом JS?
'this.that' не определен. 'this.biz' должно быть. Также не прототип '.call', так как это зарезервированный метод в javascript. – carter
Итак, вы хотите изменить область анонимной функции на внешнюю функцию, которая ее обертывает? Возможно, [это было бы полезно] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call)? –