関数内の this が参照するもの
あー、これはちょっと、今まで誤解してたかも。
this は実行時に評価されるんですね。
function Foo () { var _getx = function () { return this.x; }; this.x = 'apple'; this.getX = _getx; this.getBar = function () { return { x: 'banana', getX: _getx}; }; } var foo = new Foo (); alert (foo.getX ()); // 'apple' var bar = foo.getBar (); alert (bar.getX ()); // 'banana'
念のため、this でなく普通の変数の場合は関数定義時のスコープで評価されます。いわゆるクロージャです。
function Foo () { var x = 'apple'; var _getx = function () { return x; }; this.getX = _getx; this.getBar = function () { var x = 'banana'; return { getX: _getx }; }; } var foo = new Foo (); alert (foo.getX ()); // 'apple' var bar = foo.getBar (); alert (bar.getX ()); // 'apple'これと思いっきりごっちゃになってた気がします。
トラックバック
- このエントリーにトラックバック:
- http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/2549
コメント