以前からprototype.jsでObject.prototypeが汚染されてしまうのは問題になっていた。詳しくはノゾキ日記やアルファニート2.0の人がまとめている。先日はてなマップが正常に動かなくなったときいて、そういやはてマってprototype.jsつかってるからそのせいじゃないかな、と思って昼間検証したところ(有休バンザイ!)ドンピシャだった。 で、Rails追っかけやprototype.js追っかけの人は知ってると思うんだけど、最近のprototype.js(prototype.js 1.4.0_preからかな?)ではこのObject.prototype汚染がマズイと思ったのか、Object.prototype拡張がなくなった。そのため、継承は以前では ExtendKlass.prototype = (new Klass).extend({}); と書かれていたのが、 Exten
連載すんの? リファクタリングとか嘘で実は実践ビルトインオブジェクトハックなんだけど。 例題 配列 a = [3,5,4,2,1] から一番小さな値と、一番大きな値を取り出すにはどうすればいいか。 多分昔はこんな風に書いてたと思うんですよ。 a = [3,5,4,2,1]; for(i=0;i<a.length;i++){ if(i == 0){ min = a[0]; max = a[0]; } if(min > a[i]){min = a[i]} if(max < a[i]){max = a[i]} } 模範解答として、後先考えないやり方を提示しておく。 a = [3,5,4,2,1]; min = a.sort().shift();// 1 max = a.sort().pop(); // 5 短い。ただし、これをやるとaの内容は並べ替えられて最初と最後の要素が取り除かれる。 a /
同じ事をやるにも、いろんな書き方があるわけでいかにして短くてわかりやすいコードを書くかというノウハウを紹介します。 例として"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
ここは他所様と比べると、やってる事のレベルがと~っても低い上に説明も分かりにくく誤字脱字の多い所です。 そういう仕様なのでエラーとか出ても知りません。 対応ブラウザ: IE6.0 / IE5.5 参照画像をリアルタイムでサムネイル表示させるJavaScriptです。 画像をアップロードするまえに確認することができます。 全ブラウザで確認したわけではありませんが、どうやらIE以外はセキュリティの関係上ローカル画像は表示出来ない仕様となってるみたいです。 IE以外のブラウザは「file:///C:/Documents%20and%20Settings/」のようにsrcを書き換えないといけないみたいです。 めんどくさいから作りません。 Mozilla FirefoxではWEB上からローカル画像が参照出来ない!? 優しい方が教えてくれました。感謝。 セキュリティの観点からローカルファイルを読み込ま
翻訳 原文:Higher Order Programming In Javascript著者:Sjoerd Visscherライセンス:クリエイティブ・コモンズ・ライセンス(帰属) 前提知識JavaScriptを使ったオブジェクト指向プログラミングの知識が必要となります。以下のWebreferenceの記事を読み、よく理解しておいてください。OOP in Javascript, part IOOP in Javascript, part IIDouglas Crockford最終更新2004/3/28はじめに高階プログラミングでは、値として関数を使うことができます。つまり引数として関数を別の関数へ渡すことも、関数を別の関数の返り値にすることもできるのです。この形式のプログラミングは、しばしば関数型プログラミングで使用されますが、「通常」のオブジェクト指向のプログラミングでも非常に有用です。
Java等のオブジェクト指向はクラスベースのオブジェクト指向と呼ばれる。一方、JavaScriptはプロトタイプベース、あるいはインスタンスベースオブジェクト指向と呼ばれる。 クラスベースは、まずクラスを定義し、クラスを型とするインスタンスを作成することでプログラミングする。プロトタイプベースによるオブジェクト指向では、クラスの定義は必須ではなく場合によってはクラスという概念自体が存在しない。既存のオブジェクトのクローンとして新しいオブジェクトを作成し、そのオブジェクトに独自の性質を付加してプログラミングする。 JavaScriptのオブジェクトの性質は動的に変更可能。Java等では一度決定したオブジェクトの振る舞いは変更できないが、JavaScriptでは実行中の任意の場所でメソッドの動作を変更したり、新しく追加したり、削除したりすることができる。
昨日に引き続きJavaScriptねたです。 ページを表示した時点でJavaScriptを実行したい場合、 window.onload=function(){ alert('called when window is loaded.'); } のようにwindowオブジェクトのonloadイベントに実行したいfunctionをセットしてやればいいのですが、これだと、オンロード時にひとつのfunctionしか実行できません。 そこで、オンロード時に複数のfunctionを実行できるようなスクリプトを書いてみました。今回のコードはnaoyaさんのprototype.js でデザインパターン - IteratorのエントリにあるIteratorパターンのコードをそのまま借りたリスペクト指向プログラミングになってますw //multiple_onload.js var OnloadFunction
僕もご多分に漏れず Javascript で遊んだり調べたりしています。 いろいろなクールなサイトの生 Javascript を見て勉強しているのですが、 まず面白いなと思ったのがロールオーバーの実現方法です(JavaScript や HTML をわかってる人には当たり前の内容だと思うので、ツマラナイ話だと思いますが)。 WaSP の左上の画像のロールオーバーは <img id="logo" src="/img/logo.gif" height="100" width="103" alt="Web Standards Project logo" /> 生 HTML はこんなかんじで onmouseover/onmouseout 属性を記述せず、 JavaScript で function initRollOvers() { var logo; if (document.getElement
1分でわかるJSAN 技術 概要 JSANは、他のライブラリをインポートするライブラリです。 リポジトリ リポジトリは、ライブラリの検索対象のパスです。 JSAN.addRepository()で追加します。 JSAN.includePathにリストされます。 デフォルトのリポジトリは「.」と「lib」です。 JSAN.use() ライブラリをインポートするには、JSAN.use()を使います。 クラスがロードされます。 個々の関数もグローバルコンテキストへロードされます。 JSAN.require() クラスのみをロードします。 「Test.Simple.plan()」のように、全部書けば呼び出せます。 グローバルコンテキストを汚しません。 JSAN.exporter() ロード済みのクラスから、好きな関数をグローバルへ置き直します。 関数が使いやすくなります。 好きなライブラリの、好き
AJAX/JavaScriptライブラリまとめ (2005/9/6 Revision .1.3) 翻訳 原文:Survey of AJAX/JavaScript Libraries Copyright 2005 by Sergio Pereira, Joe Walker, Matthew Eernisse ※本翻訳は、2005/9/6の1.3版を基に作成されています。原文であるWikiページは、1.18以上に更新が進み記載されているライブラリの数が増え、複数の誤りが修正されているようです。最新の情報は原文を参照してください。 Prototype (http://prototype.conio.net/) ライセンス:MIT 概要: Prototypeは、動的なウェブアプリケーションの開発を容易にするためのJavaScriptフレームワークです。Ruby on Railsフレームワーク駆動で
はじめに JavaScriptは、本来スクリプトコードを一つ書けば、JavaScriptに対応したブラウザであれば、どのブラウザでも同じように動くはずです。しかし、現実にはそう簡単に行かず、あるブラウザではスクリプトが動くのに、別のブラウザではうまく動かない、といった事態がよく発生します。 これは、ブラウザのバージョンによって、サポートしているJavaScriptのバージョンに違いがあったり、たとえ同じバージョンのJavaScriptをサポートしていても、ブラウザごとにJavaScriptの実装に微妙な違いがあったりするためです。 このような、ブラウザの種類やバージョン、各々のブラウザ独自の実装の違いを考慮して、同じように動作するスクリプトを、クロスブラウザスクリプトと言います。クロスブラウザスクリプトを作るのには、ちょっとしたテクニックが必要となります。しかし、いったんテクニックを
翻訳 原文:JSAN-0.10 - DocumentationCopyright (c) 2005 Casey West. All rights reserved. 名前JSAN - JavaScript Archive Network概要 // または、ライブラリの中では if (typeof JSAN != 'undefined') { JSAN.use('Some.Library'); } 詳細このライブラリは、古典的なプログラミング言語に備わる振る舞いをJavaScriptへ追加します。そして、きちんと設計されモジュールに分けられたコードを作成するために必要な機能をプログラマに提供します。クラスプロパティglobalScope JSAN.globalScope = _player; globalScopeには、デフォルトでselfの値がセットされます。これはウェブブラウザでは上手く
翻訳 原文:JavaScript: The World’s Most Misunderstood Programming LanguageCopyright 2001 Douglas Crockford. All Rights Reserved Wrrrldwide. JavaScript(別名:Mocha、LiveScript、JScript、ECMAScript)は、世界で最も人気のあるプログラミング言語の一つです。世界中のほとんどのパソコンには、少なくとも1つはJavaScriptインタープリタがインストールされ動いていることでしょう。JavaScriptは、WWWのスクリプト言語としての確かな地位により広く利用されるようになったのです。 しかしその高い普及率にもかかわらず、JavaScriptが汎用的でダイナミックな優れたオブジェクト指向プログラミング言語であることはあまり知られて
The Dojo Foundationは29日(現地時間)、はじめての公式パブリックリリースとなるDojo version 0.1を公開した。Dojo version 0.1に関する多くのドキュメントは近日中に公開される予定。DojoはAcademic Free License version 2.1のもと公開されているオープンソースのJavaScriptパッケージ集で、ウェブアプリケーションを開発するためのDHTMLツールキットということになる。Academic Free License version 2.1はBSDライセンスによく似たライセンス。 Dojo version 0.1には次の5つのエディションが用意されている。 AJAXエディション I/O (XmlHttp)エディション Event + I/Oエディション Widgetsエディション The "Kitchen Sink"
今話題(?)の prototype.js を使ってみました。 うれしいこと Class.create(), extendは最高。 ある程度気軽にクラスを作れる。オブジェクト指向に慣れている人は生産性・コードの品質が上がる。(実際コードはコンパクトになったし、仕様追加時にもいい感じだった。) 実はクラス関数も作れて便利(これはprototype.jsの機能ではない) var Hoge { hoge: function() {alert('hoge');}} Hoge.hoge();みたいな。 悲しいこと Ajaxとの組み合わせでちょっと戸惑う。 インスタンス関数を、onreadystatechange ハンドラに登録した場合にいわゆるコールバック関数なので、this.xxx などのプロパティにその関数内からアクセスできるか微妙。(回避策がありアクセスできるがこれでよいのか?仕様的に不安。クロ
Certified Scrum Master Exam practice questions and answers Want to get Scrum Master certified? Think you're ready for the exam? As a final prep, tackle these 80 Scrum practice exam questions to solidify your knowledge. Amazon Bedrock tutorial for agentic AI in AWS Looking to build an AWS-based agentic AI application? Then look no further than Amazon Bedrock and it's machine learning capabilities.
追記 2005-08-23 Using prototype.js v1.5.0 リファレンスがあったみたい。これを読んだ方がはるかに有益です。あー書くんじゃなかった。 はてなの人気者 id:naoya が「prototype.js でデザインパターン」というのをやってるんだけど、prototype.js の説明をしてくれなくて困る。前から「Rails の prototype.js は便利だ」というのを目にすることがあったので、ちょうどいい機会だってことで調べた。 http://prototype.conio.net/ ドキュメントが全然ない。ないこたないと思うのでご存知の方は教えてください。しょうがないのでコードを読むことに。 http://dev.conio.net/repos/prototype/src/ ここのを順次読みます。 base.js http://dev.conio.net
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く