タグ

JavaScriptとprototypeに関するcnomiyaのブックマーク (3)

  • プログラマのためのJavaScript (7):プロトタイプ継承の正体

    JavaScriptには、クラスとその継承はないが、プロトタイプベースの継承をサポートしている」と、まー、これはよく言われる決まり文句です。がしかし、JavaScriptにおけるアレを継承と呼んでいいものかどうか? 「継承」といえば、多くの人が通常の継承、つまりクラスベースの継承をイメージするでしょうし、無意識に通常の継承とのアナロジーを追うことになるでしょう。これは危険だと思いますよ。 「プロトタイプ」とか「継承」という言葉から連想する常識的なイメージは全部捨てて、事実を白紙から眺めましょう。その事実とは、「JavaScriptには、実行時プロパティ検索のメカニズムがある」と、それだけです。 今回の内容: 「プロトタイプ」じゃ、なんのことだかわからない __proto__プロパティ、__proto__オブジェクト、__proto__チェーン __proto__チェーンを追いかけてみる

    プログラマのためのJavaScript (7):プロトタイプ継承の正体
  • http://youmos.com/news/protoload_js

  • 2006-12-20

    Object 汚染とは 簡単に言うと Object.prototype を拡張したときに、すべての for in に影響を与えてしまって、いろんなことが困る。という問題である。 DontEnum という内部属性をスクリプトから与える手段がないために発生する。 Object.prototype.hoge = 'ほげ'; for (var p in {}) alert(p); // hoge と表示される ActionScript では setPropertyIsEnumerable という関数が Object.prototype に宣言されている。 これを使うことによって、安全にすべてのオブジェクトにメソッドやプロバティを追加することができる。 例えば 以下のソースをコンパイルすると package { import flash.display.Sprite; import flash.te

    2006-12-20
    cnomiya
    cnomiya 2007/01/22
    DontEnumにしたい。。。
  • 1