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に変更してみましたが、同じ結果になりました。これは機能する必要がありますか?