私は以下のことを達成するために探しています。既存のオブジェクトに "名前空間"を持つプロトタイプを使用する
HTMLSpanElement.prototype.testNS = {
_this: this,
testFunc: function() {
console.log(this.innerHTML) //undefined as expected as this is the testFunc object
},
testFunc2: function() {
console.log(this._this) //Window object
}
}
ここでの目標は、この場合はいくつかのヘルパー関数を直接スパン要素に追加することです。私が持っていた場合
ので、以下:
<span>test</span>
私は機能が保持していることを私は知っている
spanElement.testNS.testFunc()
をスパンを見つけて、「テスト」を返すようにこのコードを呼び出すことができ、それの範囲は親です私がそれを好きなときに...
HTMLSpanElement.prototype.testFunc = function() {
console.log(this.innerHTML)
}
しかし、私は少しコードを整理しようとしています関数を追加したときに関数が来てスコープを保持する方法を見つけることができない場合は、通常のJSONオブジェクトを使ってこのスコープを_this: this
に取得するだけで "ウィンドウ"のグローバルスコープが返されます。
* *「これはtestFuncオブジェクトがあるとして、」 'this':
testNS
は、それが呼び出されてされているオブジェクト(再び、スパン)のコンテキストで呼び出されるので、これは動作します関数オブジェクト自体を決して参照しません。この関数を 'spanElement.testNS.testFunc()'として呼び出すと、 'panElement.testNS'を参照します。 –