タグ

ECMAScriptとprototypeに関するclavierのブックマーク (3)

  • JavaScriptプロトタイプマップ - maru source

    最近JavaScriptを触ることが多いのですが、JavaScriptのプロトタイプについて調べてもすぐに忘れてしまうので、ちょっとまとめてみました。 プロトタイプベース プロトタイプベースってそもそも何だろうと。僕の理解ではこんな感じです。 オブジェクトの振る舞いはそのオブジェクト自身とそのオブジェクトが保持するプロトタイプオブジェクトによって決定される またプロトタイプオブジェクトもオブジェクトなので、その振る舞いも1.に従う 1.と2.よりオブジェクトの振る舞いはプロトタイプを連鎖的にたどることとなる(プロトタイプチェーン) オブジェクトは静的な構造と関連せず、自由にプロパティを上書き/追加/削除することができる 同じコンストラクタから生成されたとしても、プロパティが同じとは限らない 以下のリンクが参考になるかと。 http://sumim.no-ip.com:8080/wiki/4

    JavaScriptプロトタイプマップ - maru source
  • ECMAScript 5thなオブジェクト生成の話2 - NullPointer's

    昨日書いた new を使わないインスタンス生成は、実際に使ってみると、たかだかオブジェクトの生成ごときで Object.create(Hoge.prototype).init(); とか長いし、init呼ぶの忘れそうだし、init メソッド定義しないといけないし、return this 忘れるとハマるしで糞すぎ。 というわけでFunctionを拡張してオブジェクト生成用のcreateメソッドを作ってみる。 Object.defineProperty(Function.prototype, "create", { value: function() { var obj = Object.create(this.prototype); if (obj.init) { // initを持っていれば、イニシャライザとして呼ぶ。 obj.init.apply(obj, arguments); } r

    ECMAScript 5thなオブジェクト生成の話2 - NullPointer's
  • uncurryThis 関数 - hogehoge @teramako

    http://wiki.ecmascript.org/doku.php?id=conventions:safe_meta_programming にて大変有用な書き方を身に着けた。 Function.prototype.bindとFunction.prototype.callの黒魔術的なもの。 obj.hasOwnProperty("prop"); と書くところをcallで書くと var func = Object.prototype.hasOwnProperty; func.call(obj, "prop"); と書ける。さらにcallをbindしてみると var func2 = func.call.bind(func); func2(obj, "prop"); となる。さらに、bindをbindすると var func3 = func.bind.bind(func.call)(func

    uncurryThis 関数 - hogehoge @teramako
  • 1