これは不可能だと私はかなり確信していますが、それを可能にする方法について誰かが独創的なアイデアを持っているかどうかを見たかったのです。
次のコードを機能させたい:
var x = new foo();
x.a.getThis() === x; // true
言い換えれば、私はこの場合にいることx.a.getThis
への言及を持ちたいのです。わかる?this
x
これを1レベル深く機能させるには、次のようにします。
function foo(){}
foo.prototype.getThis = function(){ return this; }
var x = new foo();
x.getThis() === x; // true
1つは、これをプロトタイプとして機能させ、手動でバインドして「不正行為」を行わないようにすることthis
です。
function foo(){
this.a = {
getThis : (function(){ return this; }).bind(this)
};
}
上記は私が達成しようとしていることの完璧な機能例ですが、各インスタンスにすべての追加機能が必要なわけではありません:)
参考までに、ここでの実際のユースケースは、ノード内のCassandraオブジェクトを表すクラスを作成しており、を介してスーパー列->列ファミリー->列を参照し、foo.a.b
への参照を保持できるようにすることです。foo
深い機能。