JavaScript

Railsのフォーム検証プラグイン(Client Side Validations)を試す

モデルに設定したバリデーションをクライアントサイドで再現するClient Side Validationsを試してちょっとハマったのでメモ。普通に使う分には下記サイトに書かれてあることを素直にやっていけば期待通りに動いてくれる・・・ https://github.com/bcardarell…

IDを返すメソッド

メモ 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#each()

メモ 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()の違い

メモ関数オブジェクトの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…