最近考えた便利関数
JavaScriptにこういう関数あったら良いのに
辞書かどうか調べる
var isDictionary = function(object) { return typeof object === "object" && object.constructor === Object; };
A は B のコンストラクタかどうか
プロトタイプ継承をしている前提で、instanceof したくないとき
var constructorof = function(ctor, klass) { var f = ctor && ctor.prototype; var p = klass.prototype; while (f) { if (f === p) { return true; } f = Object.getPrototypeOf(f); } return false; };
プロトタイプ継承を自分のメンバーにする
プロトタイプ継承便利だけど、実行しながらプロトタイプ元の関数をがんがん書き換えることはあまり無いと思うので、全部手前に持ってきたら若干スピードアップする。誰かもっと良い関数名かんがえて下さい。
var mixinize = function(object) { var p = Object.getPrototypeOf(object); while (p.constructor !== Object) { var names = Object.getOwnPropertyNames(p); for (var i = names.length; i--; ) { if (names[i] === "constructor" || this.hasOwnProperty(names[i])) { continue; } Object.defineProperty( object, names[i], Object.getOwnPropertyDescriptor(p, names[i]) ); } p = Object.getPrototypeOf(p); } };