タグ

JavaScriptとobjectに関するk_37toのブックマーク (16)

  • 指向性メモ::2009-07-08::JS_Randezvousを高速化した

    cho45さんがJSDeferredを高速化した手法を少し改良して、JS_Randezvousも高速化してみた。 具体的には、キューイングが遅いsetTimeout(引数に0を渡しても大分待たされる)の代わりに、Imageオブジェクトのイベントを使う。 Imageオブジェクトの来の用途は画像のプリフェッチだと思われる。srcプロパティを設定すると、オブジェクトをdocumentオブジェクトに追加しなくても自動で読み込み処理が開始されるため、documentオブジェクトに余計なノードを追加しなくても非同期なイベント(loadやerror)を発生させることが出来る。読み込む画像ファイルのURLを空のdataスキームにすると、少なくとも現行のブラウザではsetTimeoutより数倍速く非同期処理を行うことが出来る。 src属性に空のdataスキームを渡すと、大体のブラウザは画像ファイルを開くこ

  • jsclass

    The cross-platform JavaScript class library jsclass is a portable, modular JavaScript class library, influenced by the Ruby programming language. It provides a rich set of tools for building object-oriented JavaScript programs, and is designed to run on a wide variety of client- and server-side platforms. In particular, to support the writing of equally portable JavaScript code, it provides a pack

  • ブラウザごとのwindowオブジェクトの違いを理解する

    はじめに Webブラウザ(以下、ブラウザ)の種類やバージョン、各々のブラウザ独自の実装の違いを考慮し、同じように動作するスクリプトを「クロスブラウザスクリプト」と言います。ここでは、クロスブラウザスクリプトを実現する方法について、順を追って解説してきています。 来のJavaScriptの理想的な姿として、一つのスクリプトを書けば、JavaScriptをサポートしたブラウザであれば、同じように動くべきなのでしょう。しかし、ブラウザによって細かな実装の違いがあるため、クロスブラウザスクリプトのテクニックが必要となってきます。 現在一般的に使われているブラウザである、Internet ExplorerやFirefox、Opera、Safariなどでは、それらのブラウザの積極的なDOMサポートのおかげで、以前ほど多くの実装の違いはなくなってきています。しかしそれでも、JavaScriptの中でも

    ブラウザごとのwindowオブジェクトの違いを理解する
  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

  • JavaScriptでオブジェクト指向っぽいライブラリを作ってみた。

    わんくまでは珍しいJavaを中心とした日記です 目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 218 記事 - 0 コメント - 15033 トラックバック - 28 書庫 2008年7月 (1) 2008年2月 (2) 2008年1月 (10) 2007年12月 (9) 2007年11月 (5) 2007年10月 (27) 2007年9月 (25) 2007年8月 (27) 2007年7月 (29) 2007年6月 (15) 2007年5月 (23) 2007年4月 (37) 2007年3月 (8) 日記カテゴリ Java (rss) JavaScript (rss) SQL (rss) WEB (rss) その他 (rss) いろいろリンク The Herringroe Projects(Javaで色々) わんくまトップ 古い方のブログ 表題のとおり、J

  • iandeth. - Javascriptで快適・お手軽OOP - オレ的まとめ

    Javascriptでオブジェクト指向なコードを書くには、prototypeベースな言語ゆえ、他のOO言語と異なり多少の小細工が必要になります。やり方は幾つもあるようですが、自分であれこれ試してみたうえでのまとめをここで共有してみます。 OOPと言っても、あくまで個人的に最低限必要だと思うこれら機能の実現を目的にしています: 子クラスのコンストラクタにて、親のコンストラクタを実行 他のOO言語では空気を吸うがごとく実装されている機能 メソッドの継承 Child.prototype = new Parent() なんて親インスタンスを作る事無くなんとかする これらをいかに少ない手間で実現できるか。hacker諸氏ならばちょろっと頭使えばできるのでしょうが、自分はウダウダ時間かけて悩んでしまいました orz。以下3通りの解決策です。 目次 専用のextend関数を使う 使い方 サンプルおよびテ

  • Javascript オブジェクト判定あれこれ - 木曜不足

    JSRuby でここらへんのことをやるのに、Javascript でのオブジェクト判定をあれこれ試したので、TIPS 的に書いてみる。 といっても、教えてもらったり、blog で読んだりしたことを試してまとめてみただけなのだが。実はもっと良い方法があると言うことであれば教えてもらえると嬉しい。 オブジェクト判定 typeof とか instanceof があるので、ここらへんを使えば済みそうなのだが、ちょっと問題が。 typeof "abc" // => "string" typeof new String("abc") // => "object" "abc" instanceof String // => false new String("abc") instanceof String // => true cho45 さんが書かれているように「 Javascript では全てがオブ

    Javascript オブジェクト判定あれこれ - 木曜不足
  • object=clone(object); - Thousand Years

    世の中にはdeep cloneの需要がある 僕もある。某ライブラリで実装せにゃならない。スマートな方法は思いつかず。永遠ループでまわしつづけています。この前見つけたネタのエントリ。 404 Blog Not Found:javascript - お伺い - Object.prototype.clone() http://la.ma.la/blog/diary_200711270645.htm clone関数を使ったときの挙動 clone関数を使うと分身(shogo4406)が変わってもオリジナル(shogo4405)には変化がない。ただ、オリジナル(shogo4405)が変化すると分身(shogo4406)も一緒に変身してしまうので用途によっては困る。 shogo4405 = { name:'shogo4405', age:22 }; shogo4406 = clone(shogo4405

    object=clone(object); - Thousand Years
  • Javascript:DOMオブジェクトかECMAオブジェクトかを判定する。: Script雑感

    長い間スクリプト使い続けてきて今更ながら覚え書きをしようと一念発起。 まー。節操もなく色々手を出しています。これからも。 JavaScript / PHP が主なところかな? ドキュメントオブジェクトなのかスクリプトのオブジェクトなのか判定したい時って通常どうするのでしょう? typeof() ではどちらも "object" なのですが、実際のところ別物ですよね。(※1) ということで、幾つか判定用関数を作成してみました。 ・ Element かどうかの判定 要は、div とか span とかいったタグ物かどうか?です。 ■ 最新はこちら(2009/05/02) Javascript:element の判定とそれに関わる諸事 ・ DOM Node かどうかの判定 attribute (id や value)、テキストは Element ではないんですが DOM Node を受け継ぐオブジェ

  • getComputedStyle について調べてたら深みにハマったのでメモ - IT戦記

    getComputedStyle とは!? ある要素にどんなスタイルが当たっているかを計算してくれる。便利な関数。 使いかたはめっちゃ簡単! var style = getComputedStyle(element, ''); alert(style.fontSize); // 14px alert(style.color); // rgb(0, 0, 0) ちなみに第二引数は疑似要素の style を取りたい場合に使います。通常は空文字列でいい。 でも、 getComputedStyle はこのままでは IE, Safari では動かない。 Safari では window(グローバル領域) に getComputedStyle は定義されてなくて、 document.defaultView だけに getComputedStyle が定義されている。 ちなみに、 Firefox, Op

    getComputedStyle について調べてたら深みにハマったのでメモ - IT戦記
  • 文字列連結を素早くするオブジェクト - Thousand Years

    JavaScriptの文字列連結はすればするほど長くなればなるほど重くなるっていうのは有名な話でどうしても何回も連結せざるを得ない状況(テンプレート処理)では以下のような俺オブジェクトを使って対処してきました。 ただ人間欲が出てくると replace したいとか length 取得したいよ...と思い、自分で実装する必要が出ていました。ただ String.prototype が継承できるのを思い出し作り直したのが以下のもの。 function Buffer() { var k = -1, b = []; this.append = function() { for(var i=0,f=arguments.length;i<f;i++) { if(!arguments[i]){ return; }; b[++k] = arguments[i]; }; }; function toString

    文字列連結を素早くするオブジェクト - Thousand Years
  • JavaScript の配列と連想配列の違い - IT戦記

    id:cheesepie:20070131:1170172709 最近は、こういう風に JavaScript を勉強する人が増えていてとても嬉しいです ^^ id:cheesepie さん頑張ってください! で、ちょっと配列と連想配列の使いかたが違うようなので、エントリーを書こうと思いました。おせっかいだったらすみません>< ! やっぱり、このへんが JavaScript の難しいところのひとつなのだろうか。 ということで、 JavaScript の配列と連想配列の違い いってみよおー 連想配列とは JavaScript では連想配列は一番シンプルなオブジェクトのことである。つまり、すべてのオブジェクトは連想配列である。 以下のすべての連想配列はまったく同じものである。 // 1 var obj = { hoge: 'hoge' }; // 2 var obj = { 'hoge': 'h

    JavaScript の配列と連想配列の違い - IT戦記
    k_37to
    k_37to 2007/02/05
    hasOwnProperty()はあえて触れなかったのかな
  • 空繰再繰 - Plagger::Plugin::Filter::SortEntries #2

    岡村 直樹(にゃるら)『輝かしい青春』なんて失なかった人。 2023年10月現在、アルバイトが退職となったので次に備えて待機中。 ※なおゲームのシナリオ・企画を担当された『にゃるら』さんとは別の人間です 略歴1988 年代の早生まれ。『輝かしい青春』なんて失なかった人。 2003 年代後半の高校生時代、自滅的にメンタルを病み、そこから 2023年 10月現在も治療中。 とはいえ 2019年 9月頃に N 高等学校を卒業し、 その後 2022年 8月から 2023年 9月末まで Web アプリケーションエンジニアとしてアルバイト就職をするなどした。 2023年 10月現在、次回の備えて精神科でリハビリに通う日々を送っている。 プログラミングスキルは 2005 年頃、 blosxom のために Perl を扱う事を通じて修得し、 そこから 2023年 10月に至るまで継続して腕を磨いている。

    空繰再繰 - Plagger::Plugin::Filter::SortEntries #2
  • IT戦記 - JavaScript の数値はある一瞬だけオブジェクトになる。

    いちおう、先に Firefox でしか試してないと白状しておきます。 JavaScript は数値もオブジェクトのように扱える (1).toString() // 文字列 "1" が復帰される しかし、以下のコードを試すと var a = 1; n.a = 1; alert(n.a); // undefined と表示される ここで二つ仮説を立てた 数値へのプロパティ追加はスルーされる。 数値はドット演算によって一時的にオブジェクト化されてその後戻る。だから、オブジェクト化されたときに代入されても、再びオブジェクト化されたときとは別のオブジェクトになっている。 どうすれば、それを確かめられるだろうか さんざん悩んだ(深夜4時)。。。。うーん。うーん。 思いついた! こうすればいいんじゃね? alert(typeof 1); // 'numer' (function(){alert(type

    IT戦記 - JavaScript の数値はある一瞬だけオブジェクトになる。
  • Re: グローバルオブジェクトへの参照は遅い - FAX

    JavaScript 技術メモ帳 - グローバルオブジェクトへの参照は遅いIEBlog : IE JavaScript Performance Recommendations - Part 1 僕も、この件は少し気になったので調べてみました。内容のほとんどは、DOMエレメントのプロパティを繰り返し直接呼ばずに、ローカル変数にポインタを入れろとか、そういう内容でした。ここではエレメントだけでなく、グローバル関数の呼び出しでもローカルに入れたほうが速くなること、そしてどのくらい速くなるかをチェックしました。 function global(){}; (function(){ // グローバル関数をそのまま呼び出す console.time("global 0"); for(var i=0; i まず驚いたのが、下のコードの方が遅いこと。100万回の繰り返しで、922ms 対 1973ms で

  • グローバルオブジェクトへの参照は遅い - 技術メモ帳

    マイクロソフトのドキュメントに書いてあったので、 実際にやってみた。 どうも、ローカル変数にグローバルオブジェクトへの参照を キャッシングすると速くなるようだ。 http://www.microsoft.com/japan/msdn/columns/dude/dude100499.aspx たとえば、window オブジェクトを使用するときは、 以下のようにすれば速くなるっぽい。 var w = window; // 以後、w を使用する。 グローバルオブジェクトへの直接アクセス 通常の使い方。 4464 ms window.global = 0; (function(){ console.time("test"); for(var i=0; i<1000000; i++){ window.global++; } console.timeEnd("test"); console.log(

  • 1