Я сталкиваюсь с ошибкой в контексте объекта при попытке использовать Object.create.Это очень простой пример, но вот что я делаю:
var object1 = {
func1: function(functionArg){
...
functionArg();
}
}
var object2 = {
func2: {
value: function(){
this.memberVariable = 1;
...
this.func1(this.func3)
}
}
func3: {
value: function(){
if(this.memberVariable == 1){};
...
}
}
}
var newObject = Object.create(object1,object2);
newObject.func2();
Результат выражения 'this.memberVariable' [undefined] не является объектом.
Чтобы запомнить этопроблема, я думал, что я мог бы использовать apply, чтобы дать правильный контекст для функции.Поэтому я заменил object1 на что-то вроде:
var object1 = {
func1: function(functionArg){
var thisObject = this;
var functionArgApply = function(){
functionArg.apply(thisObject,arguments);
};
...
functionArgApply();
}
}
Теперь я получаю ошибку, говорящую, что Результат выражения 'functionArg.apply' [undefined] не является функцией.Я предполагаю, что это потому, что object2 использует значение нотации.Я попытался изменить его на functionArg.value.apply, но получил тот же результат.Должно ли это работать?