タグ

2008年1月9日のブックマーク (7件)

  • array.push(obj) より array[array.length] = obj の方が高速である - IT戦記

    事実どのブラウザでも 1.5 倍程度高速である。でも、カッコ悪いよなぁ。。赤面しちゃうよ。 書き換える?う〜ん。。。書き換える!

    array.push(obj) より array[array.length] = obj の方が高速である - IT戦記
    gan2
    gan2 2008/01/09
    「のブラウザでも 1.5 倍程度高速」「pushが使えないブラウザもある」
  • オブジェクト指向 JavaScript で陥りやすく見つけにくいミス。 - IT戦記

    まあ意味の無いクラスですけど以下のようなコレクションクラスを作ります。 var Container = function() {}; Container.prototype = { length: 0, buffer: [], add: function(obj) { this.length++; this.buffer.push(obj); }, toString: function() { var stringBuffer = ['Length is ', this.length, '. Contents are [', this.buffer, '].']; return stringBuffer.join(''); } };以下のように使います。 var firstContainer = new Container(); var secondContainer = new Cont

    オブジェクト指向 JavaScript で陥りやすく見つけにくいミス。 - IT戦記
    gan2
    gan2 2008/01/09
    教訓:初期値の設定はプロトタイプに頼らずにコンストラクタなどでする。
  • for 文 2.0(笑) - IT戦記

    まぁ、かなり知られてる話ですが JavaScript は .(ドット) の計算がかなり遅い。まぁ、簡単なスクリプトなら問題にならないが。web2.0的には大違いなのであります。ちなみに、.(ドット) の計算に比較演算の 3 倍のコストがかかる(IEはとくに)。 ということで、for 文は下のように(比較に .(ドット) を使わない)書くくせをつけましょう。地道な差が大きなパフォーマンスを生みます。 // for 文 2.0 for(var i = 0, len = array.length; i < len; i++) { .... }各種ライブラリの for 文 1.0 を for 文 2.0 化するだけで、CPU 使用率がけっこう下がりました。 予断ですが、間違っても .(ドット) を避けるために with 文を使うようなことはやめてください。 with 文のコストは 比較演算の 8

    for 文 2.0(笑) - IT戦記
    gan2
    gan2 2008/01/09
    「for(var i = 0, len = array.length; i < len; i++)」。比較するときはドットを使わないようにする。
  • Prototype.js を使った JavaScript OOP 講座 #01

    社内の精鋭エンジニアを中心に定期的に勉強会をすることになった。んで、 JavaScript の講義は僕がやることになった。 資料を社内だけでとどめておくのはもったいないので、ここに公開していきます。社内の人も社外の人も読んでください。 講義の内容は基的にソース嫁。ソースレビュー形式。 ※ターゲットは JavaScript は書いたことない、オブジェクト指向言語プログラマ。 Section 00 Prototype.js の前に JavaScript のオブジェクトの概要・・・ オブジェクトを作ってみる。 var object = {};オブジェクトにメソッドとかプロパティを追加してみる。 var object = { field: 'IT戦士', method: function() { alert('hello ' + this.field); } }; object.method()

    Prototype.js を使った JavaScript OOP 講座 #01
    gan2
    gan2 2008/01/09
    要復習。Object.extend と Function.prototype.bind
  • ハタさんのブログ(復刻版) : javascriptを初めて学ぶ人についてのおさらい。その2

    前回のエントリが700users突入しました。ありがとうございます。参考になれば幸いです。 ということで、その2になります。 前回書いた通り、C/Javaについてはある程度の知識がある人なので、クラスなどのオブジェクト指向はちゃんと理解されているようですが、プロトタイプ指向は初めて学ぶようです。 javascript(ECMAScript)のプロトタイプは他のプロトタイプ指向言語とはひと味違う動作をするので、その点も含めておさらい プロトタイプとはなんですか?プロトタイプとは継承パターンの一つでしかないです プロトタイプは単なる継承パターンであり、単一の方向への継承しか行わない点についてはクラスベースと同じです。 var Hoge = function (){}; Hoge.prototype.methodA = function (){ return "this is methodA

    gan2
    gan2 2008/01/09
    「同一名プロパティ(slot)はプロトタイプできないのです」の手前までは読んだ
  • ハタさんのブログ : javascriptの暗黒面

    javascript の暗黒面については、ちょっと書かれているので何も言わずもがな。なのですが、最近こういった質問が増えてきたので少し書く。 via - JavaScript の暗黒面を覗く nullはオブジェクトだ! nullは歴史的理由からobjectです。なので、typeofするとobjectって返ってきます。 alert(typeof null); // object なので、この事に気がついている方は次のようなコードを書きます。 if(typeof hoge == 'undefined' || hoge == null){ // do something } たとえば、次のようなコード var hoge = function (a){ if(typeof a == 'number'){ // was number // 数値計算とか return a + 1; } if(type

    gan2
    gan2 2008/01/09
    「thisはキーワード」のところがよく分からない。
  • steps to phantasien t(2006-04-02) - JavaScript の暗黒面を覗く

    2006-04-02 近況 Shibuya.js のイベント に申しこんだ. が, メールアドレスを間違えたらしく登録確認のメールが来ない. 再申しこみをしようとしたら満員御礼. がっくり. JavaScript なんて嫌いだ. 今日は JavaScript の悪口を書こう. "Ajax IN ACTION" を読んで以来 AJAX 界隈を信じきれずにいる. ただ私も他人をとやかく言えるほど JavaScript のことをよく知らない. Bookmarklet を書いたり仕事のデモを作る程度. 文法の知識もいいかげんで, 型なし Java のサブセットのように使っていた. そこで不信感を晴らすべく少し JavaScript を勉強してみることにした. Web アプリケーションで仕事をしている友達に教えを乞うと, 仕様書がいちばんわかりやすいとのこと: "ECMAScript Languag

    gan2
    gan2 2008/01/09
    labelのところよく分からなかった