Javascript

日本語JavaScript

function 表示(文字){ console.debug(文字); } function 言う(言葉){ 表示(言葉); } function 寝る(お休みの挨拶){ 言う(お休みの挨拶); } var 人 = function(名前, 性別){ var この人 = this; この人.の = この人; この人.の.名前 = 名前; この人.の.性別 =…

軽いブログシステムとは?

久々にITネタです。 最近ブログを自宅サーバで動かしている知り合いが数名いて 「WP動かしているけど重いんです」 「いま作ってみようとしてる」 と言っていたのを聞いて、前にブロガーのほうで「WEBサイトの構造を考える」というシリーズで僕もブログを設計…

argumentsオブジェクトと可変長引数関数

Callオブジェクトの説明のところで割愛したargumentsオブジェクトについて。argumentsオブジェクトは実行されている関数に渡された引数が要素に入った配列の"ような"ものです。arguments[i]はi番目の引数を返し、arguments.lengthは引数の個数を返します。な…

ECMA-262 3rd仕様書の日本語版

メモ代わりにリンク【Under Translation of ECMA-262 3rd Edition】 http://www2u.biglobe.ne.jp/%7Eoz-07ams/prog/ecma262r3/

jQueryでajax的XSLT

あまりXSLTって流行ってないけどテンプレートエンジンとしてみたらダントツで速いと思うんですよね。Webアプリケーション用としては。 あまり使われてないので誰も記事を書いてないようですし、ここでjQueryを使ってajax的に取得したXML,XSLをXSLTプロセッサ…

よくやるローカル変数の書き忘れミス

Javascriptのforの使い方は以下の二つ for(i=0;i<10;i++){/*..snip..*/} for(i in array){/*..snip..*/} がありますが、このの書き方だと i がグローバルオブジェクトのプロパティになってしまってずっと残ってしまいます。これくらいなら大丈夫でしょうけど…

Javascriptの文字列

既出中の既出なネタですがメモということで。Javascriptの文字列は2種類あります。 いわゆる文字列 Stringオブジェクト この二つは違うので var str = 'test message'; var strObj = new String('test message'); console.log(typeof str); // string conso…

JavascriptにおけるCallオブジェクトへのアクセス

先ほど書いたCallオブジェクトですが、どうにかCallオブジェクト自身にアクセスして中身を見てみたいというエロい人もいると思いますが、ECMA-262 3rd editionによると Activation オブジェクト*1は純粋に仕様のメカニズムである。 Activation オブジェクト…

Javascriptのグローバル変数とローカル変数

まぁいまさらな話ですがメモメモJavascriptのグローバル変数は全部windowオブジェクト(グローバルオブジェクト)のプロパティです。気をつけないといけないのはいかなる場所でもvarなしで宣言というか勝手に変数を作ったらグローバル変数になってwindowオブジ…

objectdump.jsが便利すぎる件

Firebug使ってる人なら console.log(someObject); って書くんだろうけど、見易さから言ってobjectdump.jsのほうが僕は好きです。使い方は objectdump(someObject, document.getElementById('dump')); という感じ。表示用のタグを作る手間はあるけど、それを…

Array.prototype.indexOfの実装

['hoge', 'foo', 'bar'].indexOf('foo') ってので配列要素にその文字列があるのかどうか調べたいから ArrayにindexOfを実装したいと思ったので実装してみた if(!Array.indexOf){ Array.prototype.indexOf = function(object){ for(var i = 0; i < this.lengt…

Javascriptのreplace

文字列置換 String.replace は文字列置換としては1つ目にマッチしたものしか置換しませんよ。正規表現置換なら subject.replace((new RegExp('search', 'g')), 'replace'); //または subject.replace(/search/g, 'replace'); でマッチしたものすべて置換しま…

無名関数と無意識クロージャでやるミス

これを見てほしい var tooLongNameObject = {}; (function($){ var tooLargeObject = hoge(); if(isFoo(tooLargeObject)){ $.someMethod = function(){ /*..snip..*/ return true; }; } })(tooLongNameObject); tooLargeObjectは無名関数内で宣言されてるの…

Javascriptでtabキー無効化

INPUTタグにJavascriptでサジェストっぽいものを作る場合など tabキーを無効化したい場合はどうすればいいか1.イベントハンドラで起動される関数にreturn falseをつける function func(){ /*..snip..*/ return false; } 2.タグのonkeydownハンドラにretu…

Javascriptのブロックスコープ

もうひとつ思い出したのでメモとりあえず例 (function(){ for(var i = 0; i < 3; i++){ setTimeout(function(){ console.log(i); }, (i * 1000)); } })(); とやると 3 が3回出てきてしまいます。本来なら i を3回出したい、つまりは 0, 1, 2 と出したいも…

ソースコードの表示テスト

はてなダイアリーへ引っ越した一番の理由、シンタックス・ハイライトのテスト $(function(){ (function(){ var hoge = function(obj){ if(obj instanceof String){ return true; }else if(typeof obj == 'string'){ return true; }else{ return false; } }; …