タグ

JavaScriptとJavascriptに関するagwのブックマーク (1,098)

  • [追記]JavaScriptには\uXXXXがあるんですよ / LiosK-free Blog

    2008-01-14 カテゴリ: Client Side タグ: Tips JavaScript トラックバック [追記]404 Blog Not Found:javascript - \uXXXXを使わない理由を受けて追記 dankogaiさんはあまりJavaScriptのリテラルに詳しくないのかな? 404 Blog Not Found:regexp - 全角英数字を半角に var fascii2ascii = (function(){ var cclass = '['+String.fromCharCode(0xff01)+'-'+String.fromCharCode(0xff5e)+']'; var re_fullwidth = new RegExp(cclass, 'g'); return function(s){ return s.replace(re_fullwidth,

  • javascript - \uXXXXを使わない理由 : 404 Blog Not Found

    2008年01月14日14:30 カテゴリLightweight Languages javascript - \uXXXXを使わない理由 そんなことは、ない。 JavaScriptには\uXXXXがあるんですよ[文系大学的IT系の悲哀] dankogaiさんはあまりJavaScriptのリテラルに詳しくないのかな? \uXXXXを使わないのは、訳がある。 理由は、こちら。 404 Blog Not Found:javascript - encodeURIUnicode()と%uXXXX問題 ただし、この「ほぼ」という奴がくせ者で、現状JavaScriptでは、BMPより上の文字はJavaと同じくSurrogate Pairで表現する。例えば「𪚲」(U+2A6B2)は、実体参照では𪚲なのだが、"𪚲".lengthは2であり、escape表現だと%uD869%uDEB2となる。 これが

    javascript - \uXXXXを使わない理由 : 404 Blog Not Found
  • JavaScriptがウェブを遅くする--今できる緩和策を考える

    JavaScriptの1行が、今日のブログ技術に多くのパワーを与えている。ウィジェット、共有ツール、訪問者の追跡、広告。多くの場合、ブロガーは新しい技術を自分のブログに導入するのに、JavaScriptを1行加えるだけでいい。問題は、それらの1行のJavaScriptが多数組み合わされたときに起こる。 物理学には、非線形性と呼ばれる有名な現象がある。多くの異なることが相互作用すると、結果を予測するのが難しくなるのだ。ソフトウェアの場合も違いはない。多くのコンポーネントを組み合わせると、何が起こるか予測できなくなる。これは、各コンポーネントはスタンドアロンのように振る舞うが、それらは決まった区画内のスペースと閲覧者の注意を争う関係にあるからだ。そして、この争いはすべての人を傷つける。読者、ブロガー、サービス。誰もが不満を抱くことになる。 ブロガー:疑うことを知らない被害者 ウィジェットは今流

    JavaScriptがウェブを遅くする--今できる緩和策を考える
  • document.lazy_writer

    特定のscript中に含まれるdocument.writeを上書きして、遅延描画にすることができます。 document.writeを使う広告配信スクリプトや、ブログパーツなどの挙動を置き換えることが出来ます。 外部サーバーから読み込むスクリプトをページ最後部に記述することでページレンダリングを妨げなくなります。 このページはこんな感じになってます。 var adsense_url = 'http://pagead2.googlesyndication.com/pagead/show_ads.js'; document.lazy_writer(adsense_url, function(str){ var id = "adsense_" + this.script_count; document.getElementById(id).innerHTML = str; }, {delay :

  • peter.michaux.ca - Lazy Function Definition Pattern

    Lazy Function Definition Pattern Published August 11, 2007 in JavaScript This article examines a functional-programming design pattern I've been calling Lazy Function Definition. I've repeatedly found this pattern useful in JavaScript especially when writing cross-browser libraries that are efficient at runtime. Warm-Up Problem Write a function foo that returns a Date object that holds the time th

  • 第30回 JavaScriptの動作を軽くするための工夫:ITpro

    今回はJavaScriptとWebページの表示・操作の体感速度について考えてみます。というのは,JavaScriptのせいでWebページの表示や操作などの速度が遅くなっている,と感じることがあるからです。 現在のWebサイトでは,JavaScriptを使って使い勝手を向上することは,ごく当たり前に行われています。例えば,動的にページを書き換えたり,ページ遷移を行わずにサーバーと通信を行ってデータを取得したりと,JavaScriptを使うことで,Webサイトをより便利に,より使いやすくすることができます。 Ajaxという言葉がはやってから,もう2年以上がたつんですよね。何年か前,JavaScriptはじゃまで,セキュリティを低下させる不要なものだと見なされていた頃がありました。しかしそれから一変して,「JavaScriptをがんがん使ってもいい」という空気になったことで,Webサイトを作成す

    第30回 JavaScriptの動作を軽くするための工夫:ITpro
  • 最速インターフェース研究会 :: 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を書く上で

  • Douglas Crockford's Javascript

    JavaScript Actual JavaScript Engine Performance JavaScript: The Wrrrld's Most Misunderstood Programming Language The World's Most Misunderstood Programming Language Has Become the World's Most Popular Programming Language A Survey of the JavaScript Programming Language Code Conventions for the JavaScript Programming Language The Little JavaScripter Private Members in JavaScript Prototypal Inherita

    agw
    agw 2008/01/12
    Douglas Croskford's Javascript
  • 最速インターフェース研究会 :: 実践JavaScriptリファクタリング

    同じ事をやるにも、いろんな書き方があるわけでいかにして短くてわかりやすいコードを書くかというノウハウを紹介します。 例として"abcde"を80回繰り返した文字列を作るとして実際に自分のコーディングスタイルがどんな風に変化していったのか、という。 短くなるのは確かなんだけどわかりやすいかというと、人によるかもしれない。 グローバル関数を定義2年前なら、多分こういう具合だった。 //ふつうに関数として定義する function x(str,num){ var tmp = ""; for(var i=0;i<num;i++){ tmp += str; } return tmp; } x("abcde",80) Stringのメソッドとして定義1年前だとこんな感じ。 //Stringのメソッドとして定義する String.prototype.x = function(num){ var tmp

    agw
    agw 2008/01/12
    {Programming]
  • 継続渡しによる停止・再開可能な反復処理 - JavaScriptライブラリでお馴染みの$関数を関数スタイルで実装してみる

    ここ最近の Scheme プログラミングで得た感覚を踏まえ、各種 JavaScript ライブラリでお馴染みの $ 関数 (ID による要素検索) を、ごく簡易にですが、関数スタイルで実装してみました。 まずは実装を見ていただく前に、このような例を考えてみてください。 $("id").do_something(); ここで、"id" 要素が確実に見つかるかどうかが保証されていない (do_something が失敗するかもしれない) とします。すると、 var o = $("id"); if (o) { o.do_something(); } のように、いちいちテストをしなければいけませんよね。 これが、関数スタイルでは $("id", do_something); と書くだけで済みます。つまり、$ 関数自身が成否のチェックを行い、成功していればコールバック関数にオブジェクトを渡すように設

    継続渡しによる停止・再開可能な反復処理 - JavaScriptライブラリでお馴染みの$関数を関数スタイルで実装してみる
  • 多元配列を一元配列に変換 (JavaScript): Days on the Moon

    なんだかよくわからないことになったのでメモしておく。きっかけはある要素ノード中のすべてのノード (テキストノードも含む) を集めようと思ったこと。childNodes では子要素の内容が取得できないし、getElementsByTagName("*") ではテキストノードが取得できない。今までの自分だったらこうしていただろう。 function getDescendants(node, previousNodes) { if (!previousNodes) previousNodes = []; var children = node.childNodes; for (var i = 0, length = children.length; i < length; i++) { var child = children[i]; previousNodes.push(child); if

  • 関数的っポイ!? JavaScript: Days on the Moon

    関数型プログラミング言語を触ったことがないのでこれが関数的かどうかは知らないが、いちいち function とか return とか書くのは面倒くさいと思ったのと「関数の変形」や beyond.js 、boost::bind に影響を受けて、関数の変形を行うライブラリを作った。 まずは引数の束縛、及び入れ替え。「関数の変形」及び boost::bind にならって後々入力される引数を _n であらわすことにする。 function concat(a, b) { return "" + a + b; } concat.bind(_1, "a")("b"); // "ba" concat.bind("a", _1)("b"); // "ab" concat.bind(_2, _1)("a", "b"); // "ba" concat.bind(_1, _1)("a"); // "aa" 次に関

  • IT戦記 - arguments を直接的に配列化

    Own Properties は同じだからプロトタイプだけ入れ替える (Firefox Only) id:cheesepie:20070129:1170012588 を見ていて思いつきました。 arguments.__proto__ = Array.prototype; ちなみにクロスブラウザなやり方 3 つ // 1 for(var i = 0, args = []; i < arguments.length; i ++) args[i] = arguments[i]; // 2 arguments = Array.apply(null, arguments); // 注意: コメント欄参照 // 3 for(var n in Array.prototype) arguments[n] = Array.prototype[n]; 別に配列化しなくても配列の関数は使えます 配列のプロトタイ

    IT戦記 - arguments を直接的に配列化
  • Scheme 的多値の実装 - (new Hatena).blog()

    擬似的なものですが、Scheme の多値の受け渡しの仕組みを実装してみました。このようなものです: call_with_values( function(){ values(1, 2, 3) }, function(a, b, c){ // a == 1, b == 2, c == 3 } );call_with_values の第一引数は多値を返す関数で、第二引数はそれを受け取る関数です。 多値と言っても JavaScript ですのでただの配列なんですが、それを関数に渡す際にばらしてやることで、擬似的に多値を実現することが出来るわけです。 実装はこんな感じです: function values() { return list_tail(arguments, 0); // Or, return Array.prototype.slice.call(arguments); } functi

    Scheme 的多値の実装 - (new Hatena).blog()
  • https://labs.cybozu.co.jp/blog/kazuho/archives/2006/12/oo-settimeout.php

  • 週記くらい - クロージャとは

    freehttp://d.hatena.ne.jp/smeghead/20071216/closure の続きというか今回はもうすこし真面目にあえて、コードレスで、自分の理解しているところのクロージャを説明してみるテストです。まず、誤解を恐れずに書いてしまうと、言語によってクロージャという機能が提供されている訳ではない。クロージャというのは、ある機能の副作用を用いたテクニックの名前である。クロージャと呼ばれているテクニックを使える言語は、以下の機能を提供しています。言い換えると、以下の機能の副作用によってクロージャというテクニックを使用できるようになります。 レキシカルスコープ(静的スコープ)関数がファーストクラスオブジェクト(第一級オブジェクト)であることレキシカルスコープオブジェクト(主に関数)が定義された時に、その場所から参照できる範囲を、オブジェクト(主に関数)の実行時にも参照でき

  • 第一級オブジェクト - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "第一級オブジェクト" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2024年11月) 第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基的な操作を制限なしに使用できる対象のことである。ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクトを意味しない。第一級オブジェクトは「第一級データ型に属す」という。 この言葉は196

  • クロージャのわかりにくさ - 週記くらい(BTS開発記)

  • Kanasan.JS #2 レポート & 資料: Days on the Moon

    関西での JavaScript 勉強会、Kanasan.JS #2 に行ってきました。今回は 9 時から 21 時という長丁場で、内容は前回に引き続き Prototype.js のコードリーディング。ただし、前回はバージョン 1.5.1.1 だったのが今回からは 1.6.0 を使用ということで、コードリーディングに先駆けて 1.6.0 での変更点に関するプレゼンテーションをやらせていただきました。他の参加者の方々のレポートなどは Kanasan さんの記事経由で読めるかと思います。 フリートーク 午前中はフリートーク及びプレゼンテーションということで、自己紹介の後雑多な話題に。 リファレンス どんな参考文書を利用しているかという話題。とりあえずググって出てきたページという方が結構いるようです。私も検索エンジンを使ったりもしますが、特定のサイトだとこんな感じです。 コア言語 ECMAScri

    agw
    agw 2008/01/09
    クロージャ、Prototype 1.6の詳説。クロージャの解説部分は秀逸。
  • JavaScript の変数と delete 演算子: Days on the Moon

    Kanasan.JS JavaScript 第 5 版読書会 #1 にて delete 演算子の動作が話題に上ったそうです。そこで、それについてちょっとまとめてみようかと思い立ったはいいものの、ずるずると引き伸ばしているうちに年を越してしました。しかし、読書会 #2 の開催も決まり、もうこれ以上引き伸ばしているといつまでたっても書けなさそうなので、いい加減腹をくくって個人的にまとめてみようと思います。 JavaScript の変数 delete 演算子の対象 変数に対する delete 演算子 削除できるプロパティとできないプロパティ 変数の属性 delete 演算子の返り値 JavaScript の変数 delete 演算子の話に移る前に、変数とは何なのかおさらいしておきましょう。JavaScript において、変数とはプロパティの別名です。といっても、すべてのプロパティを変数というわけ

    agw
    agw 2008/01/09
    素晴らしい文書。