タグ

ブックマーク / nanto.asablo.jp (10)

  • リンクのようなボタンを作る: Days on the Moon

    こんばんは、JavaScript Advent Calendar 2010、15 日目担当の nanto_vi (なんと) です。12 月 15 日が何の日か調べてみると東北線が宮城県に到達した日とのこと。当時は上野から仙台まで 12 時間 20 分かかったそうです。それから 123 年を経た現在では同じ時間で鹿児島中央から新青森まで行けるようになり、鉄道の速度にも JavaScript の実行速度にも日進月歩を感じる今日この頃です。 さて、アプリケーションを作っていると、見た目はリンクのようだがリンクでない UI 部品を使いたくなるときがあります。ここで「リンクでない」とは、クリックしてもページ遷移が発生しないということです。このような UI 部品は、ページ遷移の代わりにメニューの表示といった何らかのアクションを引き起こす、すなわちボタンとして振舞います。 ユーザーインターフェース記述

  • Web 開発者の責任 (翻訳): Days on the Moon

    John Resig 氏による A Web Developer's Responsibility という記事が素晴しかったので、著者の許可を得てここに日語訳を掲載します。 Web 開発者の最大の負担は、ブラウザのバグと非互換性への対応に膨大な時間を費やすことであるといって間違いないでしょう。それゆえに、それらへの対応に不満をいうのは、Web 開発者全員の常となっていました。ブラウザのバグは迷惑でいらだたしく、仕事を大幅に難しくします。 ブラウザのバグはとてもいらだたしく、通常の開発における最大の負担です。ですから、開発対象のブラウザが、自身のバグを見つけ修正できるようにしてやるのは、すべての Web 開発者にとっての責任です。自分が見つけたバグに対して責任を持ち、「ほかの誰かがこれを見つけるだろう」とは思わないことで、ブラウザの進歩の速度は加速していくでしょう。 ブラウザを支援する解決策

  • 第 11 回 FLOSS 桜山勉強会発表資料: Days on the Moon

    先日名古屋で開かれた FLOSS 桜山の第 11 回勉強会で、JavaScript 1.7 で導入されたジェネレータに関する話をしてきました。発表資料などは以下の通りです。 スライド「JavaScript のジェネレータ」 Haskell のリストを模倣する JavaScript ソース 上記の JavaScript ソースをその場で実行できるようにしたもの (Firefox 3 Beta など、JavaScript 1.8 に対応した環境が必要) 補足 (質疑応答で出た内容も含む) ジェネレータ、配列内包、分割代入は JavaScript 1.7 から、関数の省略表記、ジェネレータ内包、正規表現の先頭固定 (sticky) オプションは JavaScript 1.8 からの対応です。Firefox 2 は JavaScript 1.7 に、Firefox 3 は JavaScript 1

  • JavaScript の変数と delete 演算子: Days on the Moon

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

  • IE 7 を判別する JavaScript コード: Days on the Moon

    Abe Fettig’s Weblog » Detecting IE7+ in Javascript (日語紹介記事) にて style.maxHeight プロパティを用いた IE 6 と 7 の判別方法が紹介されている。ただ、この方法だと IE とそれ以外を判別するためにもう一手間かけなくてはいけないので、IE 7 以上だけを判別できるようにしたのが以下。 if (typeof document.documentElement.style.msInterpolationMode != "undefined") { // IE 7 or newer } else { // IE 6 or older, Gecko, Opera, etc. } IE 7 から実装された独自 CSS プロパティ、-ms-interpolation-mode を利用。画像を拡大するときの補完方法を指定するも

    koyhoge
    koyhoge 2006/10/14
    IE7以降の独自属性をつかう
  • JavaScript でブロックスコープを実現する: Days on the Moon

    JavaScript には基的にブロックスコープというものが存在しない。どうしてもブロックスコープを扱いたいときは function 式を使ったりする。 var a = 10; { var a = 20; print(a); // 20 } print(a); // 20 var a = 10; (function () { var a = 20; print(a); // 20 })(); print(a); // 10 だがやはりブロックスコープがあったほうが便利ということで JavaScript 1.7 では let 式、let 文、let 宣言が導入される。 var a = 10; let (a = 20) { print(a); // 20 } print(a); // 10 しかしこれでは対応するブラウザが Firefox 2 以降などに限られる。ところが、with 文とオブ

    koyhoge
    koyhoge 2006/07/09
    withでスコープ。
  • JavaScript でメソッド名自動生成: Days on the Moon

    JavaScript でもメソッド名自動生成はできる……といっていいんだろうか? JavaScript の一実装に過ぎない SpiderMonkey の独自拡張機能にあるだけで ECMAScript はもちろん JScript でもできないからダメかな? まあ一応できる実装もある。「404 Blog Not Found:Perl Monger の質問 - AUTOLOADって他でどうやるの?」で挙げられていた例でいうとこんな感じ。 // SpiderMonkey のみ (Firefox など) function UnicodeChar() {} UnicodeChar.prototype.__noSuchMethod__ = function (name) { var c = String.fromCharCode(name.replace(/^u/, "0x")); return (th

  • JavaScript で引数束縛: Days on the Moon

    引数束縛 (カリー化) の話。まずは「JavaScriptでカリー化」(檜山正幸のキマイラ飼育記)。タイトルを見てどこかで聞いたような話だなと思ったら「関数の変形」(Effecttive JavaScript - Dynamic Scripting) だった。だが、前者は文字列に戻してから評価というのが力技っぽくて個人的に好きでないし、後者は汎用的過ぎていささかわかりにくい。そこで今回は先頭の引数から束縛していくというのに的を絞ってみたいと思う。 まず第 1 引数のみを束縛する場合。Function#apply を使えば引数を配列として渡せるので、束縛された値と後から渡された引数とを連結してやればいいのではないか。 function curry(func) { return function (first) { return function () { var args = Array.p

  • Function Expression Statements: Days on the Moon

    もじら組フォーラムで書いたことを再掲。以下 JavaScript といった場合 JScript などは含まないものとする。 JavaScript の function ECMAScript 3 で function キーワードが使われる構文には FunctionDeclaration と FunctionExpression があり、以下のように定義されている。 FunctionDeclaration function Identifier ( FormalParameterListopt ) { FunctionBody } FunctionExpression function Identifieropt ( FormalParameterListopt ) { FunctionBody } FunctionBody SourceElements Program SourceEleme

    koyhoge
    koyhoge 2005/12/12
    function構文の評価について
  • Firefox 1.5 の JavaScript の主な変更点: Days on the Moon

    えむもじらにて Firefox 1.5 の主な変更点が取り上げられているが、JavaScript 関係の話題がないようなので補足しておく。その後 JavaScript に関する話題も追加された。 E4X E4X (ECMAScript for XML) がサポートされた (Bug 246441) 。これにより JavaScript のデータ型として XML を扱うことができるようになる。サンプルは ECMAScript for XML - d.y.d.などを参照。 Array extras Array オブジェクトのインスタンスメソッドに indexOf 、lastIndexOf 、forEach 、map 、filter 、some 、every が追加された (Bug 290592) 。詳細については Core JavaScript 1.5 Reference の Array の項を参

  • 1