JavaScript第5版(135p〜143p)
今日は息子の誕生日。
12日に満員電車で読んでいた部分。
- 作者: David Flanagan,村上列
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/08/14
- メディア: 大型本
- 購入: 52人 クリック: 1,011回
- この商品を含むブログ (271件) を見る
8.6.1 lengthプロパティ(p136)
ここででてきているcalleeの使い方。
function check(args) { var actual = args.length; var expected = arguments.callee.length; }
actualには呼び出し時の引数の個数。
expectedには宣言時の引数の個数
var expectedの行がargsだとcalleeはundefinedになる。
8.2.2.1のcalleeプロパティ参照
8.6.3 自分専用の関数プロパティの定義(p137)
function test(flag) { var data; if(!data) data = { num:0, get:function(){return this.num;}, add:function(){this.num++;} }; if(flag) { data.add(); } return function() { console.log(data.get()); } } console.log('clear'); var init = test(); init(); // 0 var hello = test('add'); hello(); // 1 init(); // 0 console.log('fin');
関数オブジェクトinitとhelloのCallは別になるので、関数内部のオブジェクトdataは違う参照となっている。
同じであれば、2回目のinit()で1が出るはずだ。
8.6.4 apply()メソッドとcall()メソッド(p139)
prototype.jsのbindだよね。
でもまだthisがよくわかっていなかったり。。。