タグ

javascriptとprogrammingに関するpipeheadのブックマーク (463)

  • 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かな。
  • 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 の主なメソッド・プロパティの一覧あり〼
  • The Good Parts 3章 オブジェクト - prog*sig

    ■3.1 オブジェクトリテラル 特にいうことない。 わざわざfirst-nameのようなブラケット表記法でないとアクセスできないようなプロパティの書き方をしている。 via Member Operators - MDC var empty = {}; var stooge = { "first-name": "Jerome", "last-name" : "Howard" } var flight = { airline : "OCeanic", number : 815, departure : { IATA : "SYD", time : "2004-09-22 14:55", city : "sydney" // ここに,を入れるとIEはエラー }, arrival: { IATA : "LAX", time : "2004-09-23 10:42", city : "Los A

    pipehead
    pipehead 2010/08/12
    > for...inでの列挙はプロトタイプチェーンを辿るのでプロトタイプ拡張してるとマズいものが列挙されてしまう。そのためhasOwnPropertyとセットで使うのをよく見る。
  • function文とfunction式とFunctionコンストラクタと。 - >& STDOUT

    部屋とYシャツと私と俺とお前と大五郎。javascriptでおなじみの関数周りの仕様について、昔からMDCに詳しく載っていたのですが、ようやく実感できてきたので、自分用解釈メモ。 function 文 function multiply(x, y) { return x * y; } 同時にその関数名と同じ名前の変数を作成する 「関数名」と「その関数が代入された変数名」は違う(!) 定義されたスコープ内ではその名前でアクセス可能 宣言より前に使える(parseの時点でインスタンスができる?) function 式 (function 演算子) var multiply = function(x, y) { return x * y; } 実行時にインスタンスができるのでこの式より前にmultiply()では使えない 現在のスコープを継承する(=クロージャを形成する) Function コン

    function文とfunction式とFunctionコンストラクタと。 - >& STDOUT
  • はてな「JavaScript で学ぶ イベントドリブン」のメモ - prog*sig

    pipehead
    pipehead 2010/08/05
    > params.hasOwnProperty(name) でプロトタイプ汚染の回避
  • JavaScript の分割代入まとめ - mooz deceives you

    幻の ECMAScript 4th 幻となった ECMAScript 4th のドラフトを眺めていたところ, p.33 に Destructuring assignment and binding (分割代入, 分割束縛) という項目を発見した. 分割代入に関しては JavaScript 1.7 (Firefox などが用いる SpiderMonkey や Rhino に実装済み) から使用が可能であるため, ご存知の方も多いのではないかと思う. 「そういえば詳しい仕様は見たことがなかったな」と軽い気持ちで読み進めていたところ, そこに述べられていることが Haskell や OCaml など関数型言語におけるパターンマッチと同等であると分かり, 驚いた. 例えば, 分割代入においては次のように deep なパターンが利用可能であると書かれている. let { x: {a, b}, y:

  • window.onhashchangeが便利すぎる - TYAGE EMOTION

    昨日の記事 http://d.hatena.ne.jp/da-yoshi/20100722/1279811055 に対してコメントいただきました。 http://d.hatena.ne.jp/da-yoshi/20100722/1279811055#c1279857804 window.onhashchangeというそのものズバリのイベントハンドラがあるのですね。 IE8については、HTML5だけではなく、XHTML1.0やHTML4.01の標準モードでも動作しました。Firefox3.6でもChrome5でもSafariでも動作しますね。これなら十分採用できます。ちょっと簡単なHTML書いてみました。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loo

    window.onhashchangeが便利すぎる - TYAGE EMOTION
  • JavaScriptコーディング等を書く上でのパフォーマンス確認事項30:phpspot開発日誌

    30 best practices to boost your web application performance - Web User Interface Architect JavaScriptコーディング等を書く上でのパフォーマンス確認事項30。 自分へのインプット&メモがてらにちょっとまとめてみます。 JavaScript DOMの操作は可能な限りやめる eval, new Function() は遅いので可能な限り使わない withステートメントを使わない(使った事ないですが) for-in 文ではなく for 文を使う。 ループの中で try-catch ではなく、try-catchの中にループを置く グローバル変数をなるべく使わない aaa+='AAA';aaa+='BBB'; の方が aaa+='AAA'+'BBB';より速い 複数の文字列連結には、Array で文字列

  • iframe内でGreasemonkeyを実行させない方法 - prog*sig

    Greasemonkeyで@includeをhttp://*など広い範囲に指定しているとき、実行されるページにインラインフレーム(iframe)があると、そのiframe内でもGreasemonkeyスクリプトは実行されるのでややこしい事があります。 例えば、iframe pageのページにはiframeが2つあるので、下のようなスクリプトだと3回もlogが表示されるためiframeの存在に気づかないとスクリプトがバグってるのかと誤解します。 // ==UserScript== // @name iframe test // @namespace http://efcl.info/ // @include http://* // ==/UserScript== GM_log("テスト"); GM_log(location.href); // URLを表示すると意味が分かりやすい。 その

    pipehead
    pipehead 2010/06/16
    > try { if(top !== self) throw 0 }catch([]){ return }
  • そこそこ規模が大きくても何とかなるjavascriptの設計(URL dispatcherの薦め) | tech.kayac.com - KAYAC engineers' blog

    弁当生活始めました。agoです。 以前のjavascriptの開発はサーバサイドと同じPGが開発することが多く、機能をファイル単位で分割してそのページで必要なファイルのみを読み込むと言うことが行われていました。 ただ、最近はサーバサイドとクライアントサイドの分業が進んだことや表示速度の兼ね合いもあり、単一ファイルに全体を記述しサーバサイドでは全ページでその一ファイルのみを読み込むような形になることが多いです。 単一ファイルの利点としてはサーバサイドの実装に依存せずに任意の機能を追加できることがありますが、欠点として機能毎の切り分けが難しくなると言う点があります。 jQueryを使用して$('.selector')で切り出す方法もありますが、マークアップの全体像を正確に把握できていないと不要なページで間違って実行されてしまう危険性もあります。 そこで、以下のようなJSを先に読み込み、各URL

    そこそこ規模が大きくても何とかなるjavascriptの設計(URL dispatcherの薦め) | tech.kayac.com - KAYAC engineers' blog
    pipehead
    pipehead 2010/05/26
    > 各URL毎に機能を切り出して実装する
  • applyとcallの使い方を丁寧に説明してみる - あと味

    JavaScriptに、applyとcallというメソッドが用意されていますが、自分なりにapplyとcallの丁寧に説明をしてみようと思ってこのエントリーを書くなどをしてみます。 applyとcallは非常に似たメソッドなので、まずはcallから説明します。 callメソッドとは? callメソッドは以下のように呼び出します。 methodA.call(thisArg, [, arg1 [, arg2, ...]]); methodAには任意の関数(メソッド)を指定します。 callの引数は第一引数にmethodAのthisとしたいオブジェクトを指定して、第二引数以降はmethodAに渡したい引数があれば、カンマ区切りでそれぞれ指定します。 callメソッドは、すべての関数が共通して持っているメソッドです。すべての関数はFunctionクラスのオブジェクトで、callはFunction.

    applyとcallの使い方を丁寧に説明してみる - あと味
  • setIntervalとsetTimeoutを調べた結果余分なことになった - 三等兵

    なかなかどうして、怠惰な若輩者につき不明な点が多々あるため先人の知恵をお借りしたく候。というわけでいろいろ知恵や知識などいただきます。・・・消化不良でしたorz setTimeoutの中の小難しいお話 自分だけじゃ到底調べられないし分かる術もない。Cなんて知るか。だのにこうしてなんとなくでも知ることができるのはありがたいことです。 http://labs.gmo.jp/blog/ku/2007/09/firefoxsettimeout.html Firefoxだけで少し古い記事だけど今でも同じようなものかな。他に私がわかるような資料もないのでこちらをベースに考えさせてもらいます。大きな変更はないだろうし。 タイマースレッド URL先読んだだけではイメージできなかった。整理のため箇条で要約。 Firefoxにはタイマー処理だけを管理している専用のスレッドがある(TimerThread) タイ

    setIntervalとsetTimeoutを調べた結果余分なことになった - 三等兵
    pipehead
    pipehead 2010/05/13
    >> setTimeout() → 処理が終わってから次の処理を始める setInterval() → 処理が終わっていなくても指定の時間毎に処理を始める
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • いつの間に実装されていたjQuery.proxy等という便利な機能 - Mach3.laBlog

    この記事は賞味期限切れです。(更新から1年が経過しています) Mach3: Prototype.jsのbind的なノリのものを書く を一ヶ月ぐらい前に書いたばかりですが、いつのまにかjQueryでも同様の機能が実装されておりました。 1.4出てからもう3ヶ月ぐらい経つと言うのに… jQuery.proxy jQuery.proxy() – jQuery API jQuery.proxy( function, context ) function 文脈を変えたいfunction context functionでthisとして扱いたいオブジェクト つまりはイベントハンドラ等にfunctionを渡すとき、 そのfunction内で使うthisをあるオブジェクトに固定しておきたいときに使います。 DEMO DEMO (on JSbin) <input type="button" value="N

    いつの間に実装されていたjQuery.proxy等という便利な機能 - Mach3.laBlog
  • JavaScriptのメソッドコールの仕組みを深く理解する (参照型とは?) - 風と宇宙とプログラム

    はじめに JavaScriptでは関数もオブジェクトです。このことはよく理解されていると思います。関数とメソッドとの明確な違いはなく、どちらも関数オブジェクトである、というところまではよいのですが、関数コールとメソッドコールの違い、あるいはその仕組みは正確に理解されているでしょうか。先日、職場の後輩に問題を出したところ正確に答えられえなかったので、いまさら?と思われるかも知れませんが、関数コールの仕組みを解説します。 関数とメソッド JavaScriptでは関数とメソッドには質的な違いはありません。オブジェクトのプロパティとして定義される関数を便宜的にメソッドと呼んでいるだけです。parseInt()などのグローバル関数もグローバルオブジェクトのプロパティであり、関数の中でローカルに定義した関数も概念的にはActivation Objectのプロパティなので基的には全ての関数はメソッド

    JavaScriptのメソッドコールの仕組みを深く理解する (参照型とは?) - 風と宇宙とプログラム
    pipehead
    pipehead 2010/03/21
    > obj.func()というメソッドコールのobj.func部分の評価結果は値である関数オブジェクトではなく、参照型のデータ構造になります。
  • apply/call での継承の話 - nothing but trouble

    この件について。 http://d.hatena.ne.jp/iskwn/20091215/1260828978 継承というかスコープがわかりやすいというのもメリットだと思うけど、カプセル化しやすいのも大きなメリットかなと思う。 function Foo(){} (function(){ var bar = 'bar'; this.bar = bar.toUpperCase(); function baz () { console.log('baz'); } this.baz = function() { baz(); console.log('BAZ'); } }).call(Foo.prototype); function Bar(){} Bar.prototype = new Foo(); (function() { this.hoge = 'hoge'; this.baz = fu

    apply/call での継承の話 - nothing but trouble
  • jQuery1.4から追加されたjQuery.proxy()を試してみる

    Quick Tip: Learning jQuery 1.4's $.proxy | Nettuts+ jQuery 1.4で追加されたjQuery.proxy()、この使い方について解説がされていましたので、ご紹介。自分なりに変化させたりしていざチャレンジ!! jQuery.proxy()ってなに? This method is most useful for attaching event handlers to an element where the context is pointing back to a different object. Additionally, jQuery makes sure that even if you bind the function returned from jQuery.proxy() it will still unbind the

    jQuery1.4から追加されたjQuery.proxy()を試してみる
  • Firebugで元のJavaScriptのコードに手を入れずにdebug用のconsole出力を入れる方法 - monjudoh’s diary

    Firebugでは条件付きブレークポイントが使えるので、 scriptタブにて該当行にブレークポイントを貼り、 条件としてconsoleへの出力を||区切りで、最後に&& falseを入れる。 console.debug('this.lastPosition') || console.dir(this.lastPosition) && false こうするとブレークポイントを通る度にconsoleへの出力は評価され、 consoleに出力され、最後の&& falseのため式全体は必ずfalseとして評価されるため ブレークすることはない。 追記 console出力系関数の戻り値はundefinedなんだから&& falseは不要か 追記 nanto_vi @monjudoh JSでは||より&&の方が優先順位が高いので、a || b && c はaが真ならbもcも評価されずに全体が真として

    Firebugで元のJavaScriptのコードに手を入れずにdebug用のconsole出力を入れる方法 - monjudoh’s diary
  • JavaScript的startsWith 続き — ありえるえりあ

    http://dev.ariel-networks.com/Members/uchida/javascript7684startswith/ 文字列が短いときはindexOf版に及びませんが、 私はこれを単に、lastIndexOf版はindexOf版より引数が増えたため範囲チェック等の処理が増えたんだろうと思っていました。 がendsWithを調べたところ、どうもそれだけではないようです。 goog.string.endsWith = function(str, suffix) { var l = str.length - suffix.length; return l >= 0 && str.lastIndexOf(suffix, l) == l; }; closureのendsWithはご覧のとおりlastIndexOfを読んでいます。 startsWithでは逆にこれをindexO