JavaScript

Number dot

1. // => 1 1.toFixed(2) // 1. toFixed(2) => syntax error (1).toFixed(2) // (1) . toFixed(2) 1 .toFixed(2) // 1 . toFixed(2) 1..toFixed(2) // 1. . toFixed(2) 1["toFixed"](2)

汎用メソッドの簡易記法の擬似対応

いろいろ参考にしつつ自分で書いてみる 関数のlengthを本物と同じにする(例えばArray.forEach.length == 2) コード (function(){ var objects = { String: [ "charAt", "charCodeAt", "concat", "indexOf", "lastIndexOf", "localeCompare", "match" /*, "qu…

JavaScript 1.6のArray map()

var functionLength = 5; var parameterList = new Array(functionLength).map(function(_, i){ return "$" + i; }).join(","); 期待するparameterListの値: "$0,$1,$2,$3,$4" 実際のparameterListの値: ",,,," new Array(length)は配列を生成して長さを指定…

Textノードの部分文字列置換の試作

ECMA-262第3版のStringのreplace()に似せる 置換する値としてNodeを許可する (置換する値として関数を渡した場合、その関数が返す値としてでも可) 置換した結果が複数のNodeになる場合はDocumentFragmentを、正規化などをして結果が1つのTextになる場合はTex…

HTMLの属性としてのイベントハンドラ内でいくつかのグローバル変数・関数が使えない

HTMLの属性としてのイベントハンドラはスコープチェーンに含まれるオブジェクトが多い オライリーのJavaScript本に書いてありそう(17.1.2あたりか) グローバルはスコープチェーンの最後尾 グローバルより前にスコープチェーンに含まれるオブジェクトと同名の…

String, slice vs substring

slice substring 引数の値が負数 文字列の長さ+引数の値に置換 0に置換 startがendより小さい 何もしない startとendを入れ替える http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/15-5_String_Objects.html

HTMLの属性として書くイベントハンドラ

http://pc11.2ch.net/test/read.cgi/hp/1198422525/899 属性値 == FunctionBody 属性値内のevent == イベントオブジェクト 属性値内のthis == currentTarget スコープチェーン: ローカル→this→グローバル IEのscript(for, event属性付き)も同様(for属性で指…

RangeのcreateContextualFragment()で消される可能性のあるノード

文書型宣言 処理命令 マーク区間 html head title meta link body ... var str = "<html>"+ "<head><meta content=''><link><title>a</title></head>"+ "<body><p></p></body>"+ "</html>"; var range = document.createRange(); //document直下を選択中の場合 //Firef…

XPCNativeWrapper, HTMLCollection

XPCNativeWrapperで包まれたHTMLCollectionでは[[Get]]でコレクションにアクセスできない (例えばcollection[indexOrName]) collection.item(index)かcollection.namedItem(name)かcollection.wrappedJSObject[indexOrName]としなければならない http://www.…