SpiderMonkey の escape() は第二引数にビットフラグを受け取る。 Amazon の API 用にこんな関数を書いてて気付いた。 function amazEnc(str) encodeURIComponent(str).replace(/[!\'()]+/g, escape).replace(/[*]/g, '%2A'); amazEnc('unescape(_)') //=> Error: invalid string escape mask 8 この 8 は replace() が escape() に渡したマッチ位置。 該当ソースコードを見てみる。 /* * Contributions from the String class to the set of methods defined for the * global object. escape and un
CSS を利用したアニメーションでは、必ず現在時刻を取得するコードが入ります。 var now = +new Date; ECMAScript-262 5th では Date.now() が新しく追加されました。 Date.now() は +new Date と同じ機能(現在時刻を数値で返す)を持ちながら、new の必要がないため速そうです。 ベンチ <!doctype html><html><head><title></title> </head><body> <script> window.onload = function() { Date.now || (Date.now = function() { // Date.now が実装されていないブラウザ用の実装 return +new Date; }); job1(); job2(); } function job1() { var
2009-11-12 ナビ子記法について追記しました 本文 今日は、amachangさんの記事 http://d.hatena.ne.jp/amachang/20071010/1192012056 を 1mm だけ掘り下げ、IE 以外のブラウザでも document へのアクセスを速くする方法がないか、色々試してみます。 # 記事自体はずいぶん前に書き上げてたけど、公開するの忘れてたんだな。 C系を追加しました。C系は「ネストしたスコープからグローバル変数にアクセスするとどうなるか?」がテーマです。 試したこと 以下は様々な方法で document へのアクセス速度を計測します。 A系では、非日常的な方法で測定し、B系では実際の用法に近い形で測定します。C系では何重にもネストしたスコープから、グローバル変数にアクセスするとどうなるかを測定します。 A系 A0 は、素の document に
JavaScript Actual JavaScript Engine Performance JavaScript: The Wrrrld's Most Misunderstood Programming Language The World's Most Misunderstood Programming Language Has Become the World's Most Popular Programming Language A Survey of the JavaScript Programming Language Code Conventions for the JavaScript Programming Language The Little JavaScripter Private Members in JavaScript Prototypal Inherita
DOM APIを使用して作ったDOMツリー、うまく生成されているか見てみたい事は多々ある。少なくともオイラはある。簡単にテキスト表示してくれると嬉しいなぁと常々思っていたのだが発見した。 Firefox(というかMozilla系かな)限定だろうけどXMLSerializerがあるのだ。 使い方は簡単。 var serializer = new XMLSerializer(); //略 var root = document.createElement('div'); var anchor = document.createElement('a'); var aText = document.createTextNode('はてな'); anchor.setAttribute('href','http://www.hatena.ne.jp/'); anchor.appendChild( aT
今や少し複雑なブックマークレットは外部から読み込むのが当たり前になり,gist やら coderepos やらのおかげで置く場所にも困らない。*1 この際の書き方は人によって結構まちまちだが,やることは同じなのだから「これコピペすれば FA」的なテンプレがあってもいいはずと考え,模索してみた。 方針 変更する所を前方にまとめて共通部分は後方に括り出す まず名前を明記 (↓で自明なら省略) その後にスクリプトの URI 複数読めるように 「%nn」が入ると何かと面倒*2なので空白文字を避ける 汚染しない この3つは単体で動くものを書くときにも気を付けると吉。 成果物 javascript:'{name}',['http://a.b.com/0.js','http://l.m.net/1.js',function(d,i,e){for(i=this.length;--i;d.body.appe
先日、「JavaScriptのオブジェクトについて考察してみた - あと味」を書いてから、chikuraさんからコメントいただいたり、id:dankogaiさんから「404 Blog Not Found:javascript - にはクラスはない」という記事で言及いただいたり、JavaScript: The Good Partsを読み返したりした結果、newについて調べたいという衝動にかられましたので、その調べた結果を書いてみたいと思います。 newを調べようと思ったキッカケを整理 まずは、そのキッカケから整理します。 chikuraさんのコメントより 押さえるべきポイントは、new演算子の際に何が行われるか?だと思うので、こちらのページもぜひ読んでみてください。 JavaScript の new 演算子の意味: Days on the Moon http://nanto.asablo.j
自分用メモ // JavaScript でクロージャを書くときこう書く事が多い (function() {})() // 何故なら // function() {}() // と書くと // function() {} が式ではなく、文として解釈されてしまうからだ。 // 文として解釈されないためには、文の途中(最初以外)に function と書いてやる必要がある // なので、まず開きカッコを書いてやる。 ( // の後に function() {} // と書いてやると function は式になる ) // 正確には、カッコの対は The Grouping Operator という演算子である。 // カッコ以外にも var a = // のように代入演算子のあとでもいい function() {} // つまり、以下のような記述も可能である。 var b = function()
スライド1: 2 分でわかる uupaa.js~ Debug Navigation ~uupaa.js@gmail.com スライド2: まず スライド3: 階層ナビゲーション• スタックトレースを表示する機能– Firebug などに搭載されている– 今日の主役は、この「ナビ子」さん スライド4: uupaa.js と ナビ子function xboot(uu) {}uu.css.size.get(uu.id("id"));• ナビ子「今ここよ」• ユーザ「ありがとう」uucsssizeget < xboot < _fire スライド5: $(function() {});jQuery と ナビ子$("#id").width();• ナビ子「今ここよ」• ユーザ「…え ? 」• ナビ子「え ? 」curCSS() < (?)() < each() < getWH< css() <
javascript | 22:00 表題のとおりです下記のサイトを見てピンと来ました。予約語なしにJavaScriptでいろいろしてみる http://d.hatena.ne.jp/hoshikuzu/20080317 というわけでスクリプトは以下のとおり。アドレスバーに貼り付ければ動作します。(IE8,Fx3,Chrome1で動作しました。)javascript:(0)['\143\157\156\163\164\162\165\143\164\157\162']['\143\157\156\163\164\162\165\143\164\157\162']('\166\141\162 \141=\160\141\162\163\145\111\156\164(999*\115\141\164\150.\162\141\156\144\157\155());\166\141\162 \
JScript を使ってちょっとしたテキスト処理をした後、完了通知を WScript.Echo でなくビープ音でやろうと思って方法を探したんですが、なかなか見つかりませんでした。 検索範囲を VBScript まで拡げて探したところ、以下の方法を見つけてちょっと感動(笑)しました。 The beep is chr(007). You can perform this operation with the following code: set wshShell = Wscript.CreateObject("wscript.Shell") beep = chr(007) WshShell.Run "cmd /c @echo " & beep, 0 http://www.visualbasicscript.com/m_1328/mpage_1/key_/tm.htm#14752 これを JS
JavaScript で作って意味があるのかどうか分かりませんが、作ってみました。 応用編 入力したテキストをページ上に書き出し、個々の文字をドラッグ&ドロップ で動かせるようにする ソースを読んでも中身が分からない HTML を作成する パスワードチェックの部屋 (パスワードは「開けごま」ですが、HTML のソースや JavaScript を解析しても、絶対にパスワードが分からない仕組みになっています。) バー ライブラリ編 こんなの JavaScript で作るかよってな代物です。 できてしまったものはしょうがないでしょう。 utf.js (UTF-8 <-> UTF16 変換) base64.js (Base64 encode/decode) md5.js (MD5) des.js (DES 暗号化/復号化) zlib.js (JavaScript による zlib 実装、zlib
肌トラブルがでたときは、ベビーローションでしっかりと保湿し、次に「ルイボスティーパック」が良いと知りティッシュにルイボスティーをとにかくがぶ飲みして症状が改善されている為、随時変更する場合があります。 暇さえあればすぐに品切れになる場合があります。その際にご注文なさるかご検討ください。 まずはじめは、ベビーローションでしっかりと保湿し、次に「ルイボスティーパック」が良いと知りティッシュにルイボスティーを染み込ませて塗ってしっかり保湿が必要だということを知ったんですが、医師の言う通り、里帰り先の小児科にかかってね。 使う量が足りなかったようです。会員サイトの登録をご希望の方はこちらをご一読ください。 入荷待ちの場合、ご登録いただきますと、入荷時にご注文なさるかご検討ください。 入荷待ちの場合、「入荷お知らせ」ボタンが表示されたというものが多数。 パックするだけでなく、私もルイボスティーを染み
GreasemonkeyのGM_addStyle関数は呼び出すたびにhead内にstyle要素を作る。 Greasemonkey 0.8.20080609.0のソースより。 function GM_addStyle(doc, css) { var head, style; head = doc.getElementsByTagName("head")[0]; if (!head) { return; } style = doc.createElement("style"); style.type = "text/css"; style.innerHTML = css; head.appendChild(style); } これは、はっきり言って効率が悪い。 補足:CSSをミスったときの影響が自分だけに留まるというメリットはある。 補足2:効率悪いと書いたけど、体感できるような話ではないと思
ふと思ったのでメモ。 function Hoge() { this.init.apply(this, arguments); } Hoge.prototype = (function(){ /* * Private functions */ function foo(arg){ // .... } /* * Public Methods/Properties */ var pub = { init: function(name){ // ... }, bar: function(arg){ foo(arg); // ... } }; return pub; })(); としておくと、プライベートな関数をprototype内から使える。ただし、prototype内はインスタンスに共有されるので、変数を入れておくと後で痛い目に会いそう。逆に共有されることが分かっていれば有用にも使えそうだ。 も
同じ文字列のn回繰り返しを作る最速の方法を探求してみた - muddy brown thang パズルっぽくておもしろかったのでやってみた。と、別のところにも書いたのだけど、あそこじゃあ反応が薄いので、見てる人が多そうなこっちで聞いてみる。 function(s,n){ var q = ''; while(n){ if(n%2) q += s; s += s; n >>= 1; } return q; } javascript:alert((function(s,n){var q='';while(n){if(n%2)q+=s;s+=s;n>>=1;}return q;})('hoge',10)) //=> hogehogehogehogehogehogehogehogehogehoge 速さのベンチはこっちの一番下にある data:uri をアドレス欄に入れてみたらいいと思います。 もっ
EfficientJavaScript - Dev.Opera - 効率的な JavaScript 目次 この文書について 効率的な JavaScript ECMAScript eval や Function のコンストラクタを使うのはやめよう eval を書き換えよう 関数を使いたいなら function を使おう with を使うのはやめよう 性能を決める関数で try-catch-finally を使うのはやめよう eval と with は隔離しよう グローバル変数を使うのはやめよう 暗黙のオブジェクト変換に気をつけよう 性能を決める関数で for-in を使うのはやめよう 文字列は累積スタイルで使おう プリミティブの操作は関数呼び出しより速い setTimeout() や setInterval() には文字列でなく関数を渡そう DOM 再描画と再フロー 再フローの回数をでき
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く