タグ

javascriptに関するpipeheadのブックマーク (482)

  • typeof演算子から学ぶJavaScriptのデータ型の概念と関係する考察のまとめ - 三等兵

    まずはtypeof演算子について。JavaScript Gardenというウェブページがありまして。こういう一文がありまして。 The typeof operator (together with instanceof) is probably the biggest design flaw of JavaScript, as it is near of being completely broken. http://bonsaiden.github.com/JavaScript-Garden/#typeof 訳)http://efcl.info/adiary/Javascript/JavaScriptGarden#k95p17 要するにtypeof演算子は「ヒャッハーtypeof演算子ぶっ壊れてるぜー」ってことらしい。理由が下記の表。 [表1] Value Class Type - "f

    typeof演算子から学ぶJavaScriptのデータ型の概念と関係する考察のまとめ - 三等兵
    pipehead
    pipehead 2011/03/08
    プリミティブ値以外のデータ型は Object 型; typeof 演算子はデータ型を返し Object.prototype.toString() はオブジェクトの種類 ([[Class]] プロパティ) を返す
  • 単語前方一致・単語後方一致・単語完全一致 String.indexOfの魔力 - ぶれすとつーる

    indexOfにはあまり知られてない裏技的な使い方がある。 よく知られてるString.indexOf indexOf 構文 indexOf(searchValue[, fromIndex]) パラメータ searchValue 検索する値を表す文字列。 fromIndex 呼び出す文字列内の検索を始めるための位置。0 とその文字列の長さの間にある整数を指定できます。デフォルトの値は 0 です。 概要 呼び出す String オブジェクト 中で、指定された値が最初に現れたインデックスを返します。fromIndex から検索を始め、値が見つけられない場合、-1 を返します。 indexOf - MDC Doc Center 概要からわかるように、文字列の出現インデックスを取るものだが、肝心なのは見つからない場合-1を返すことだ。 これを利用してとある条件の下で以下の三つの正規表現ライクなこと

    単語前方一致・単語後方一致・単語完全一致 String.indexOfの魔力 - ぶれすとつーる
  • DOMに要素が挿入される度にイベントを起こすDOMNodeInsertedの扱い方 - 三等兵

    DOMに要素が挿入されたときを検出できるのがDOMNodeInsertedイベント。 たとえばajaxで特定の場所が表示されたらDOMに要素が挿入されたときや、ページング系のアドオンやユーザースクリプトでスクロールバーが下にきたら要素が挿入されたときなど、そういったときにイベントを発生させることができます。 要素が挿入されたかどうか検出するには自前でDOMを監視するコードを書く必要がありますが、このイベントを使えば簡単ですね。IE以外の主要なブラウザには実装されています。 しかしこれどうも確認してみたら非推奨になってるらしいんだけど。 http://www.w3.org/TR/DOM-Level-3-Events/#event-type-DOMNodeInserted あれか。同期的だからかな。何もしらずに使うと面倒なことなりますからね。というかなりました。とはいえ、これに変わるものはない

    DOMに要素が挿入される度にイベントを起こすDOMNodeInsertedの扱い方 - 三等兵
    pipehead
    pipehead 2011/02/24
    > タイマーを使って、一定の間隔でイベントが発生するようにしています。無駄なものはタイマーの登録前にはじくので、それ以下の処理は実行されません。
  • 「#!」 (SheBang)の語源を徹底追求 「切り刻んでビックリ」 - karasuyamatenguの日記

    「#!URL」エントリーに対するツイートやコメントで#!という文字列自体に対する疑問などが意外とあったので、ここでまとめてみる。 #!とは… ウェブとUnixで違った意味を持つ "shebang"と綴られる Hash(#) Bang(!)の略 グーグル検索tips: "#!"では何も出ない。"shebang"で検索するといい。 Unixでは昔からスクリプトファイルでインタプリタを指定する最初のラインに使われてきた 例えば ~/bin/ohhaiを #!/usr/bin/python print "OH HAI"とすればpython hoge.pyとしなくても直接コマンドとして使える $ ohhai OH HAIこのようにスクリプトファイルの一行目でインタプリタを指定する行頭に使う。詳しくはここを参照 http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%

    「#!」 (SheBang)の語源を徹底追求 「切り刻んでビックリ」 - karasuyamatenguの日記
  • 無職のプログラミング [JavaScript]小数を整数に変換する望ましい方法は?

    昨日書いた 背景をdiv要素に描画して、HTML5 Canvasタグに重ねる だが、 これは HTML5@iPhoneゲーム開発 のCanvas高速化Tipsを参考にしている。 このTipsには「座標や幅、高さの指定はintにする」という項目もあって、深く考えずにparseIntしていたのだが、見直したら「parseIntは使わない」と書いていた。 浮動小数点数を整数にする高速(?)な方法 - JavaScript比較 によると、parseInt(Number)はブラウザによってはかなり遅いようだ。 そもそもparseIntは文字列を変換する関数だし。 じゃあどうすればいいのかと思ったのだが、 Re:浮動小数点数を整数にする高速(?)な方法 - JavaScript比較 によると、 しかし、関数呼び出しである Math.floor よりも、プリミティブ演算 (含ビット演算) を使うほうが格

    pipehead
    pipehead 2011/02/12
    > ~ 演算は符号つき32bit整数として演算するから、2の31乗である2147483648未満なんだな。
  • use strict 怖い - hogehoge @teramako

    Perlの話ではない、JavaScriptの話なのである。 あと、タイトルはまんじゅう怖い的な意味なのである ECMAScript 5 strict mode in Firefox 4 ? Mozilla Hacks ? the Web developer blog Firefox4.0b10pre に ECMAScript5 の Strict モードが実装されましたーパチパチー で、自分がはまった罠について書いておくよ。まあ上記ページに書かれていることなんだけどね。 "caller", "callee" in arguments オブジェクト 使うとエラー (function() { "use strict"; return arguments.callee; })(); TypeError: 'caller', 'callee', and 'arguments' properties

    use strict 怖い - hogehoge @teramako
  • ブラウザ動作の理解-リフローとリペイント及びその最適化 | ゆっくりと…

    ブラウザ動作の理解の2回目です。今回はレンダリング・ツリーの更新に絡む、リフロー (要素の大きさ、位置などの再計算) とリペイント (描画) に関する解説を、「High Performance Web Pages – 20 new best practices」 の著者 Stoyan Stefanov のブログエントリーから 「Rendering: repaint, reflow/relayout, restyle」 を翻訳してお届けします。 同記事は、前半がリフローとリペイントに関する解説と、表示レスポンスを向上させるためのスタイル変更に関する Tips、後半は dynaTrace AJAX Edition と SpeedTracer を使った IE および Chrome の描画パフォーマンスの計測の解説で構成されてる、長い記事となっています。 今回はその前半部分をご紹介します。 レンダ

    pipehead
    pipehead 2011/01/23
    http://www.phpied.com/rendering-repaint-reflowrelayout-restyle/ の前半部分であるリフロー・リペイントの解説とレスポンス向上のためのヒントの翻訳
  • How to resize images proportionally / keeping the aspect ratio?

    I have images that will be quite big in dimension and I want to shrink them down with jQuery while keeping the proportions constrained, i.e. the same aspect ratio. Can someone point me to some code, or explain the logic?

    How to resize images proportionally / keeping the aspect ratio?
    pipehead
    pipehead 2010/10/20
    画像のアスペクト比を維持したままリサイズする
  • JavaScriptベストプラクティス30選-jsEdu

    #jsEduから適当に選んで日語にしたものです。 訳とかは全く正確ではなく、as possibleなど表現をかなり省いてるので命令口調になってます。 フィーリング的なものはあんまり入れてないので、興味をもったらTogetter – 「JavaScriptのベストプラクティス大会 jsEdu」を読みましょう。(まとめた奴はこれの10倍くらいありますが、被ってるのや関係無いのもあるので読める程度の量です) 全てを確認したわけではないので、正確性は保証しかねます。 ==ではなく===を使うべき (自動的に型変換に行われないのでバグが減る、高速) new Object() and new Array() よりも[] or {}を使うべき。 []や{}の方がシンプル JavaScriptを高速化する6つのテクニック | エンタープライズ | マイコミジャーナルで出てくるのは間違いだと思う。 []

    JavaScriptベストプラクティス30選-jsEdu
  • jQuery公式のテンプレートplugin 「jQuery Templates」

    jQuery公式のテンプレートplugin 「jQuery Templates」 Check Tweet 配布元:jquery’s jquery-tmpl at master – GitHub リファレンス:jQuery Templates jQueryプロジェクトからいくつかの公式プラグインが公開されました。そのひとつが「jQuery Templates」。これはJavaScriptで利用できるテンプレートエンジンです。 利用方法 エントリー執筆時点ではGitHubからダウンロードして利用できますが、jQuery 1.5からはjQuery体に組み込まれ、プラグインなしで利用することが出来ます。(体への組み込みは延期されました)また、MicrosoftのCDNでも公開されていますので次のような記述で読み込むことも可能です。 <script type="text/javascript"

  • Nicholas C. Zakas「getElementsByTagName()がquerySelectorAll()よりも高速な件」 - 以下斜め読んだ内容

    NCZOnline 2010.9.28のエントリ Why is getElementsByTagName() faster that querySelectorAll()? querySelectorAll()で取得されるNodeListは更新されない(static)件について getElementsByTagName()と比較して 処理の重さや、重くなる訳を仕様書やWebKitの実装を参照しながら説明して この2つのメソッドの使いどころを手短に記す という主旨のエントリ 豆知識 Scott Schillerは今Yahoo!のフェロー id:amachangの2008.3.6のエントリ「IE8 で実装された Selectors API とは何か?」でquerySelectorAll()/getElementsByTagName()の違いは分かりやすく書かれてる 以下斜め読んだ内容 エントリ

    Nicholas C. Zakas「getElementsByTagName()がquerySelectorAll()よりも高速な件」 - 以下斜め読んだ内容
  • File APIでブラウザーからローカルファイルを操作 (1/5)

    W3Cで標準化が進められている「File API」を使うと、指定したローカルファイルのファイル情報やファイルの中身(データ)をJavaScriptで取得できます。今回のJavaScriptラボはこのFile APIを使って、ブラウザー上にファイルの内容を表示してみましょう。テキストファイルの内容をそのまま表示するサンプルと、バイナリファイルを16進数データの羅列(バイナリダンプ、ダンプリスト)として表示するサンプルを作成します。 File APIの対応ブラウザー File APIは2010年10月現在、以下のブラウザーで利用できます。 Firefox 3.6 / 4β Google Chrome 6 このほか、Safari 5が、File APIを使ったファイル情報(ファイル名やファイルサイズなど)の取得に対応していますが、ファイル内容へのアクセスはできないので今回作成するサンプルは動作し

    File APIでブラウザーからローカルファイルを操作 (1/5)
  • 演算子の優先順位と結合規則

    一つの式の中で複数の演算子が使われている場合、どのような順番で演算を行うのかによって結果が異なる場合があります。その為、 JavaScript では演算子の優先順位が決められており優先順位が高いものから順に演算を行います。また同じ優先順位の演算子が使われていた場合にどの順番で演算を行うのかを決めるために演算子の結合規則も決められています。ここでは JavaScript における演算子の優先順位と結合規則について解説します。 (Last modified: 2024-10-01)

    演算子の優先順位と結合規則
    pipehead
    pipehead 2010/10/03
    > 演算子が左結合の場合には左から順に、右結合の場合には右から順に演算が行われます。
  • 七章第四回 ノードをまとめて扱う:DocumentFragment — JavaScript初級者から中級者になろう — uhyohyo.net

    七章第四回 ノードをまとめて扱う:DocumentFragmentこのページの最終更新日:2018年7月29日 今回解説するのは、DocumentFragmentというものです。これは、題名の通り、複数のノードをまとめて扱うのに必要なものです。 実はこれはノードの一種です。つまり、「テキストノード」とか「要素ノード」とかと同じように、「DocumentFragment」という種類のノードがあるのです。 ノードの一種だから、appendChildなどで子ノードを追加したり、あるいはcloneNodeでDocumentFragment自身をコピーしたりもできます。 このDocumentFragmentはどういった意味を持つノードなのかということですが、典型的な説明としては「小型のdocumentのようなものである」とされます。 つまり、DocumentFragmentは、ひとつの独立した木構造

    七章第四回 ノードをまとめて扱う:DocumentFragment — JavaScript初級者から中級者になろう — uhyohyo.net
    pipehead
    pipehead 2010/10/02
    > DocumentFragmentを使うことの利点は、例えば画面に影響する木構造へのappendChild(など)を少なくできるという点があります。
  • getElementsByTagName()がquerySelectorAll()より高速な理由

    Nicholas C. Zakas is a web software engineer who specializes in user interface design and implementation for web applications using JavaScript, Dynamic HTML, CSS, XML, and XSLT. JavaScriptNoteListオブジェクトは特殊なオブジェクトだ。同じオブジェクトであるにもかかわらず、動的なオブジェクトと静的なオブジェクトという2種類の実装を持っている。この違いが性能に大きな差を与えている。このあたりの話がWhy is getElementsByTagName() faster that querySelectorAll()? - NCZOnlineにわかりやすくまとまっており参考になる。 JavaScript

    pipehead
    pipehead 2010/10/01
    getElementsByTagName() => 動的な NodeList, querySelectorAll() => 静的な NodeList
  • prototype と __proto__ - フリーフォーム フリークアウト

    移転しました http://please-sleep.cou929.nu/20100929.html

    prototype と __proto__ - フリーフォーム フリークアウト
  • valueOfとtoStringとToPrimitive - os0x.blog

    valueOfとtoStringメソッドの水深43cmぐらいの深さの話 - 三等兵のもう少し深いお話。コメント欄に書こうかとも思ったけど、最近ブログ書いてない気がしたのでちゃんと記事にしてみる。 まずは問題です。次のコードを実行したときにtrueかfalseのどちらがalertされるかそれぞれ当ててみてください。 var date = new Date(); var date_string = date.toString(); var date_value = date.valueOf(); alert(date == date_string); alert(date == date_value); true, true false, false true, false false, true (難しい問題ではないと思いますが、)この問題の答えは最後に。 続いて、もっとシンプルな問題です。

    valueOfとtoStringとToPrimitive - os0x.blog
  • isSameNodeとisEqualNode - 三等兵

    エレメントの比較でisSameNodeとisEqualNodeというのがあった。 手元で確認した限りでは、 Firefox3.6.8 Google Chrome5.0/6.0 Opera10.61時点でisEqualNodeは無し IE9pp IE8以下はどちらも無いようです。 isSameNode 同じノードかどうかをbooleanで返す。sameだから同一って表現で大丈夫かな。 //js var par = document.getElementsByTagName('p')[0]; par.isSameNode(par); // true //html <p>paragraph</p> 自分自身のノードの場合においてtrueを返す。たとえば、 //js var par = document.getElementsByTagName('p')[0]; par.isSameNode(pa

    isSameNodeとisEqualNode - 三等兵
    pipehead
    pipehead 2010/09/08
    > 自分自身のノードのみtrueを返すのがisSameNodeで、そのノード同士が同じであればtrueを返すのがisEqualNodeかな。
  • 第2回 JavaScriptのデバッグとチューニング | gihyo.jp

    使用頻度が高いのはデベロッパーツールを起動するCtrl+Shift+I(もしくはCtrl+Shift+J)と、コンソールを開閉するESC、コンソールでは補完候補を選択するtabなどが挙げられます。 例えば、長くて間違えやすいencodeURIComponentのスペルは、Ctrl+Shift+Jでデベロッパーツールを起動してコンソールを開き(コンソールが開かなかった場合はESC⁠)⁠、eだけ打ってtabキーを2回押せば encodeURIComponent が補完されるので、スペルを簡単にコピーできます。 JavaScriptデバッガの活用 前回はブレークポイントの設置方法を紹介しましたが、もう一歩進んだ条件付きブレークポイントの設置方法を紹介します。 まず、通常のブレークポイントを設置します。 この青くハイライトされた行番号の上で右クリックすると次のようなメニューが表示されます。 ここで

    第2回 JavaScriptのデバッグとチューニング | gihyo.jp
    pipehead
    pipehead 2010/08/25
    ショートカットキーの一覧と console オブジェクトのデバッグ用メソッドの使用例あり〼
  • JavaScriptのDOM Core基礎 - 三等兵

    Coreの簡易リファレンス。Coreは要素を参照したり、相対位置から周りのノードを参照したり、要素を生成するといった部分。主に利用するであろうプロパティやメソッドはカバーしているつもりですけど、これも入れとけってのあったら教えてください。 このあたりは地味で使いづらくその上理解しにくいという残念な部分。ふと忘れたときに使う個人的なものですが、慢性jQuery拒絶症候群な人よかったらどうぞ。それにしても暑い。ガリガリ君おいしいね。 DOMとは。 Document Object Model (DOM) は、HTML および XML ドキュメントのための API です。これはドキュメントの構造的な表現を提供し、内容や表示形態の変更を可能にします。端的に言えば、Web ページをスクリプトやプログラミング言語とつなぐような機構です。 https://developer.mozilla.org/ja/

    JavaScriptのDOM Core基礎 - 三等兵
    pipehead
    pipehead 2010/08/23
    DOM Core の主なメソッド・プロパティの一覧あり〼