JavaScript
モデルに設定したバリデーションをクライアントサイドで再現するClient Side Validationsを試してちょっとハマったのでメモ。普通に使う分には下記サイトに書かれてあることを素直にやっていけば期待通りに動いてくれる・・・ https://github.com/bcardarell…
メモ var id = (function(){ var id = 0; return function(){return ++id;} })(); console.log(id()); #=> 1 console.log(id()); #=> 2 console.log(id()); #=> 3
メモ // ①コンストラクタ var foo = new (function(){this.foo = 1;})(); // ②コンストラクタ? var foo2 = (function(){this.foo = 1;return this;)(); ①②の違いを調べた。 前者の関数リテラルの中のthisは自身を指していて、後者のthisはブラウザで実行さ…
メモ Array.prototype.each = function(f){ for(i=0; i < this.length; i++){ f.call(this, this[i]); } };
メモインスタンスメソッドとクラスで使用する定数はprototypeオブジェクトに設定する。 このようにすることで内部的な効率がよくなるため。 var Person = function(name, gender){ this.name = name; this.gender = gender; } Person.prototype.getName = fu…
メモ function bindArguments(f){ var boundArgs = arguments; return function(){ var args = []; for(var i = 1; i < boundArgs.length; i++) args.push(boundArgs[i]); for(var i = 0; i < arguments.length; i++) args.push(arguments[i]); return f.app…
メモ関数オブジェクトのcall()メソッドとapply()メソッドの違いは、後者は第二引数を配列形式で指定する点だけが違うのかと思っていたが引数を受け取った側の引数の扱いも違うようだ。 var f = function(){ return arguments.length; }; f.call(this, [1,2])…
prototype.jsを少しずつ読み解く。自分用メモ。 var Prototype = { Version: '1.6.0.1', Browser: { IE: !!(window.attachEvent && !window.opera), Opera: !!window.opera, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.us…