私はJSで次のメソッドを呼び出します。ネストされたオブジェクトにこのスコープを継承
app.execute({
first: function() {
console.log('executed');
oneMethod(); // function undefined
app.oneMethod(); // works
this.oneMethod(); // works when I exract app object into this variable
},
second: function() {
}
});
アプリのオブジェクトは次のようになります。だから、
var app = function() {
var oneMethod = function() {
};
var secondMethod = function() {
};
var execute = function(first, second) {
var obj = new first();
};
this.oneMethod = oneMethod;
this.secondMethod = secondMethod;
this.execute = execute;
};
、最初のコードはHTMLに座って、第二外部ライブラリです。私は引数の中のその外部ライブラリのメソッドを使って何かをします。私はグローバルな名前空間に矛盾がないようにこれをしたいと思います - ただapp
変数があり、そのメソッドは引数オブジェクトでのみ利用できます。
キーワードnew
のオブジェクトを作成すると、このオブジェクトを作成する場所と同じように、コンストラクタに同じ名前空間を使用したいと考えています。
これは可能ですか?より良い方法がありますか?
ようES5にES6ソリューションを変換することができ、あなたの現在のコードは動作していますか? –
コンテキストを 'app'に設定するためにbind()を使用します。[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind] – Chris