サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは本日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。
ついに本連載の最後となりました。今回のテーマはJavaScriptの設計スタイルです。 JavaScriptで様々なアクションを実現しようとすると,ブラウザによって挙動が異なったり,場合によっては動かない場合があります。例えば,標準化されているW3C DOMといえども,ブラウザの種類やバージョンによってその実装の度合が異なるからです。 今日,様々なブラウザがあふれており,またそれらのバージョンも多岐にわたります。すべてのブラウザ,そしてすべてのバージョンで全く同じように動くようにするというのは,もはや現実的ではありません。 そこで,近年,Unobtrusive Scriptingと呼ばれるスクリプティングの考え方が注目されるようになりました。"Unobtrusive"は,"でじゃばらない","控え目な","つつましい"といった意味を持っています。 Unobtrusive Scripting
Microsoft Learn. Spark possibility. Build skills that open doors. See all you can do with documentation, hands-on training, and certifications to help you get the most from Microsoft products. Learn by doing Gain the skills you can apply to everyday situations through hands-on training personalized to your needs, at your own pace or with our global network of learning partners. Take training Find
多彩な演出効果をカンタンに導入できる事で脚光を浴びたprototype.jsの登場を皮切りに、インターネットで公開されているJavaScriptライブラリの数は、この一年で急激に増加した。何かやりたいことがあったときはWebで検索すれば、大抵、どこかにライブラリが転がっている。便利な世の中になったものだ。 一方、Webを通じて提供されるサービスは多様化の一途を辿っている。JavaScriptライブラリは整ってきたが、当然、置くだけでは機能しない。ライブラリのサポートページには簡単なサンプルが載っているものの、サンプルがそのまま適用できるケースはごくわずかだ。しかたなく、他の誰かが似たような事をやっていないかとWeb検索するはめになる。 思えば、これまでJavaScriptを言語としてとらえ、きっちり向き合う機会は少なかったのではないだろうか。 1995年の終わり、Netscape Navi
new演算子の働き 前回の記事では、プロトタイプチェーンを理解するために、プロパティの"参照"のタイミングで何が起こっているのかを解説した。それでは、プロパティを"作成・変更"する際には何が起こるのだろうか。 連載第3回で述べた通り、JavaScriptでは(リテラル値を除けば)すべてのデータはオブジェクトである。つまり、プロパティの値も(リテラル値を除けば)オブジェクトとして定義される。プロパティを定義(作成)するときの動きを理解するために、まずは、new演算子の働きをきちんと確認しておきたい。 new演算子の働きは、これまでたびたび紹介してきたCore JavaScript 1.5 Referenceを見ても理解し難いかもしれない。 Core JavaScript 1.5 Referenceで解説されているのは、new演算子の働きというよりは使いかたの部分だからだ。もう少し理解を深める
Duff's Device(ダフスデバイス)とは、C言語での可変長の連続的コピーをループ展開により最適化実装するときに直面する端数の問題を解決するための手法である。 C言語のswitch-case文が持つフォールスルーを利用して、アセンブリ言語で行われる技巧をC言語で実現している。1983年11月、ルーカスフィルムで働いていたトム・ダフが発見した。 ループ展開は、ループのための分岐回数を減らす技法である。指定されるループ回数が不明な場合、ループ展開すると回数が合わない場合が出てくるので、ループの途中にジャンプすることで調整する。例えば、8回ぶんのループを展開した場合、指定されたループ回数が8で割り切れないなら、その回数を8で割った剰余のぶんだけ処理を実行する位置にジャンプさせる。 ダフはそのような最適化を検討していてCでの技法を発見した。
try...catch 文 try...catch 文はテストしたい文のブロックを指定し、さらに投げられるであろう例外に対する 1 つ以上の対処方法を指定します。例外が投げられると try...catch 文がそれを受け取ります。 try...catch 文は 1 つの try ブロックと 0 個以上の catch ブロックからなります。前者は 1 つ以上の文からなります。後者は try ブロックで例外が投げられた場合にどうするかを指定する文からなります。すなわち、成功させたい try ブロックと、失敗した場合にコントロールを渡す catch ブロックからなります。try ブロック内(もしくは try ブロック内から呼び出された関数内)のいずれかの文が例外を投げた場合、コントロールはすぐに catch ブロックに移ります。try ブロックで例外が投げられなかった場合は catch ブロッ
ハッシュテーブルは、中級の基本技である。「ハッカー」と呼ばれる程のプログラマならば、使いなれた自作ハッシュライブラリを持っていて当然である。また、これは非常に検索が速く便利なために、awk から Perl に至るスクリプト言語で、言語仕様に採り入れられてよく「連想配列」などと呼ばれている。要するに、 $List{'http'} = 80; のように、配列なのに文字列を添字として取るような書き方をするアレである。これは「キー」である文字列に対して、「値」である何かのオブジェクトを返すという動作であり、そういう動作こそが「ハッシュテーブル」以外の何者でもない。ものすごく便利なので、ぜひマスターされたい。→ Java 講座の「ハッシュテーブル」 準備~リスト版線形探査 ハッシュテーブルの原理 ライブラリの実装 他の応用 Java の Hashtable クラス 準備~リスト版線形探査 ハッシュテ
引数束縛 (カリー化) の話。まずは「JavaScriptでカリー化」(檜山正幸のキマイラ飼育記)。タイトルを見てどこかで聞いたような話だなと思ったら「関数の変形」(Effecttive JavaScript - Dynamic Scripting) だった。だが、前者は文字列に戻してから評価というのが力技っぽくて個人的に好きでないし、後者は汎用的過ぎていささかわかりにくい。そこで今回は先頭の引数から束縛していくというのに的を絞ってみたいと思う。 まず第 1 引数のみを束縛する場合。Function#apply を使えば引数を配列として渡せるので、束縛された値と後から渡された引数とを連結してやればいいのではないか。 function curry(func) { return function (first) { return function () { var args = Array.p
JavaScriptでカリー化。ありがち、つうか実際にあるでしょうね。小ネタと思ってやりはじめたら、意外と混乱した。一種のメタプログラミングのはずだが、実際にはテキスト加工処理。 内容: カリー化ってなに? カリー化を行う関数を作る:準備 カリー化を行う関数を作る:テキストのパッチワーク カリー化を行う関数を作る:組み立て ●カリー化ってなに? 2引数の関数f(x, y)に対して、「gがfのカリー化」だとは、f(x, y) = g(x)(y) が常に成立すること -- ゴチャゴチャ説明するより実例実例: functio sum(x, y) { return x + y; } このsumのカリー化の例: function curried_sum(x) { return function (y) {return sum(x, y);} } curreid_sum関数は1引数で、戻り値として関数
Effective JavaScript A Few Ways to Improve Your JavaScript Effective JavaScript は JScript 、JavaScript 、ECMAScript による効果的なスクリプトの構築方法を解説するものです 目次 0 序章 はじめに 表記法 1 関数 引数 - デフォルト引数、正当性チェック、残余引数、オーバーロード 関数とオブジェクト - 無名関数、関数オブジェクト、関数アダプタ クロージャ - 無名関数を返す関数 関数の変形 - 関数の合成、引数の束縛、引数の加工 2 例外 3 オブジェクト プロパティとメソッド - 基本的な話 コンストラクタとプロトタイプ - コンストラクタ、メソッドの定義、プロトタイプによる継承 アクセスレベル - 非公開メンバ、限定公開メンバ実現のアプローチ © 1999-2004 exe
2007年12月06日15:30 カテゴリアルゴリズム百選 アルゴリズム百選 - 値と参照 今回は値と参照について取り上げます。 突然ですが問題です。以下のJavaScriptプログラムを実行すると、何と表示されるでしょうか? プログラム: var a = [0, 1, 2, 3]; var b = a; b[0] = 'zero'; p(a); 出力: エラー: 答えは、"zero, 1, 2, 3"です。しかし、なぜaを直接変更していないのにaの中身が変わっているのでしょうか? ここで、二行目に注目してみます。ここでは変数bに変数aを代入しています。変数aは配列です。ここだけ見ると、内部で起こっているのは以下のようなことに見えなくもありません。 array b -+ array b -+ | 0 | | 0 | | 1 | = | 1 | | 2 | | 2 | | 3 | | 3 |
照合に失敗した場合は、 exec() メソッドは null を返し、 lastIndex を 0 に設定します。 照合に成功した場合、 exec() メソッドは配列を返し、正規表現オブジェクトの lastIndex プロパティを更新します。返された配列は、一致したテキストを最初の項目として持ち、その後、一致したテキストの括弧によるキャプチャグループに対して 1 つずつの項目を持ちます。 index 文字列中で一致した位置の 0 から始まるインデックスです。 input 照合対象であった元の文字列です。 groups 名前付きキャプチャグループを示す null プロトタイプオブジェクトで、そのキーが名前となり、値がキャプチャグループ、またはキャプチャグループが定義されていなければ undefined です。詳しくはキャプチャグループを参照してください。 indices 省略可 このプロパティ
・パターンマッチサンプル JavaScriptでのパターンマッチのサンプルを載せておきます。 ●任意の文字に一致 書式:/文字/ 例1:"abcdefg".match(/a/) 結果:a 例2:"abcdefg".match(/cde/) 結果:cde 例2:"abcdefg".match(/xyz/) 結果:null ●改行文字を除く任意の1文字にマッチ 書式:/.文字/ 例1:"abcdefg".match(/.f/) 結果:ef ●複数個の文字にマッチ 書式:/../ (.はマッチする個数並べる) 例1:"abcdefg".match(/.f/) 結果:ef ●指定文字のいずれかにマッチ 書式:/[任意文字]/ 例1:"abcdefg".match(/[ahg]/) 結果:a ●指定文字以外のいずれかにマッチ 書式:/[^任意文字]/ 例1:"abcdefg".match(/[^ah
■ [event][javascript] Kanasan.JS Javascript第5版読書会#2 のまとめ Kanasan.JSの サイ本読書会 #2 におじゃましてきました。 今回は読書会としては前代未聞の規模で正直どうなるかと思ったんですが、意外となんとかなって感激。 他言語(Javascript以外)の話題を制限したことも、今回は有利に働いたと思います。 リンク集 LT一覧 感想一覧 記録 チャットログ(重いので注意) 映像ログ 以下、読書会のログです。なるべく会場の雰囲気を再現するように心がけてみました。 10:15 全員、順番に自己紹介する。俺到着。(迷ったorz) 10:23 amachang到着! 10:39 LTのターン LTは、自分のスライドをいじってたりであまり聞けませんでした…_|‾|○ tyoroさんのブログが よくまとまっているので、 そちらを参照すると良い
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く