タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

JavaScriptとprototypeに関するcancer6のブックマーク (6)

  • や...やっと理解できた!JavaScriptのプロトタイプチェーン - maeharinの日記

    JavaScriptのプロトタイプチェーンについて理解しようとしたのだけど、prototypeとか__proto__とかごちゃごちゃになって、色んなブログを読んでもなかなか理解しきれなくて悶々としていたのだが、図を書いたらパッと理解できた!以下、情報ソースはなるべくECMAScript仕様書(3rd)を元にするようにして書きました なぜ分かりづらいのか? そもそも、なぜJavaScriptのプロトタイプチェーンは自分にとってこうも分かりづらかったのだろうか?自分なりに分析してみると、まず、「似ているが違う用語が沢山ある」という点がある。ざっとあげただけでも、「prototypeと__proto__」「__proto__と[[Prototype]]」「FunctionとFunctionオブジェクト」などがある。そして次に、「入り組んだ構造が動的に変化する」という点がある。上記のように似たよう

    や...やっと理解できた!JavaScriptのプロトタイプチェーン - maeharinの日記
  • A JavaScript Constructor Problem, and Three Solutions

    A JavaScript Constructor Problem, and Three Solutions preamble As you know, you can create new objects in JavaScript using a Constructor Function, like this: function Fubar (foo, bar) { this._foo = foo; this._bar = bar; } var snafu = new Fubar("Situation Normal", "All Fsked Up"); When you “call” the constructor with the new keyword, you get a new object allocated, and the constructor is called wit

  • プロトタイプチェーンをもっと理解する - tacamy--blog

    Markdown が使いたくて、はてなダイアリーからはてなブログに引っ越してきました。ちょっと書いては放置してるブログの残骸があちこちに散らかっております。 前回プロトタイプについて勉強してみてふんわり分かった気になったけど、その中で 1 箇所よく分からなかったところがありました。 前回のおさらい Javaと比較しつつ、JavaScriptのプロトタイプについて調べてみる - tacamy memo の「分からなかったところ」を参照。 前回分からなかったところ プロトタイプには次のような特徴がありました。 プロトタイプの中身は、そのオブジェクトを基に生成されたインスタンスから参照される (暗黙の参照) 同じオブジェクトを基に複数のインスタンスを生成した場合、どのインスタンスからも同じプロトタイプの中身 (プロパティ) を参照できる 複数のインスタンスからひとつのプロトタイプを参照しているだ

    プロトタイプチェーンをもっと理解する - tacamy--blog
  • Javascript/prototypeプロパティ - 俺の基地

    prototypeとはなんなんだ? 今まで単なる継承用の何かをつなげておくためのものだと思っていたが jQueryのコードにチラホラprototypeプロパティからメソッドを直接使う記述があったので気になった さらにnewまでprototypeの中のメソッドを使ってる・・・なんだかよくわからん ▲ ▼ 今の認識と使い方 まずprototypeというものは関数オブジェクトに必ずあって、そこから作られたオブジェクトはprototypeプロパティを継承するということ つまりprototypeプロパティにメンバを追加すればnewした対象に全部メソッドを追加できる var Hoge = function(){}; Hoge.prototype.piyo = function(){alert('aaa');}; var aaa = new Hoge(); aaa.piyo(); こういうこと

  • 最速インターフェース研究会 :: Function.prototypeを拡張して遅延実行を実現する

    JavaScriptにおいて関数というのはFunctionオブジェクトで、他のビルトインオブジェクトと同様に、組み込みのメソッドがある。これがapplyとcallしかないのだけれど、こんな感じに使う。 func.apply(thisObj,arguments) func.call(thisObj,arg1,arg2,arg3) thisObjには、その関数内で「this」として使うオブジェクトを指定する。applyの第二引数はargumentsオブジェクトを指定する。配列か、現在実行中の関数のargumentsオブジェクトを丸ごと別の関数に引き渡せる。つまり引数の長さが良くわかってなくても使える。 callは代わりに func.apply(thisObj,[arg1,arg2,arg3]) と書けるので、実はいらないんじゃないかと思う。 これらは多分、ふつうにJavaScriptを書く上で

  • 【javascript】prototypeを使って宣言したfunctionでthis.の値が取れない

    ----------Sample---------- function objA(){ this.val ='objA'; } objA.prototype.sayval = function(){ alert(this.val); }; var A = new objA(); A.sayval(); //(1): 'objA' var objA_sayval = A.sayval; objA_sayval(); //(2): undefined var B = {sayval:objA_sayval, val:'objB'}; B.sayval(); //(3): 'objB' //引数を実行するだけの関数。 function run_func(f){ f(); } run_func(objA_sayval); //(4): undefined run_func(A.sayval); /

    【javascript】prototypeを使って宣言したfunctionでthis.の値が取れない
  • 1