js

SICP 2.2.4の図形言語をブラウザ上に実装してみた

2012-04-07: 新しいブラウザでうまく動いてなかったので修正しました(関数の引数にclassという名前を使っていた)してみました。 こないだ社内SICP勉強会で図形言語のところをやったんだけど、動かしてみなければわかりづらいし手軽に動かせる環境がない。各…

Life Lexiconのライフゲームパターンをインタラクティブに実行するブックマークレット書いた

js al

http://www.argentum.freeserve.co.uk/lex_a.htm この辺で実行。やっぱり動いてないとよくわかんないですからね。 最初にexpandしてから実行しないと意図しない動作になるかも。 javascript:var s=document.createElement('script');s.src='http://gist.gith…

javascript indent in vim

javascriptの自動インデントがしたいんです。 いまいちなのしかなかったので、自作。ソースは下のほうに。

セミコロンの省略に気をつける

js

Operaにて。 SomeClass.prototype.foo=function() { //.... } //setup params var x=hoge(); hage(x); という(正常動作する)コードがありまして、思うところがあって以下のように変更したところ SomeClass.prototype.foo=function() { //.... } //setup pa…

はまった

js

SomeClass.prototype.foo=function() { var x=someFuncWithCallback( function(a) { this.hoge(a) //!!! }) } 全然直感的じゃないよこんなの>< thisは直接の呼び出し元によって決定されるというルールを頭に叩き込んでおかないと

エレメントのスタイルを簡単に設定するユーティリティ関数

function setProp(obj,props) { for(var p in props) obj[p]=props[p] } function setStyle(elm,style) { setProp(elm.style,style) } 使用例: var menu=document.createElement('div') setStyle(menu,{ display: 'block', position: 'absolute', right: '2…

newの挙動

js

眠いので低調。 (function(){})() の代わりに - IT戦記 へー。 newが正確には何をするか考えたことなかったけど、 new function() { //どうのこうの } は、 (function(){ this={} //どうのこうの return this })(); みたいなことしてるんだろうか。そう考え…

Operaとfirefoxでxpathの挙動が違うよ!誰のせい?誰のせい?

<html> <head> <title>hoge</title></head> <body> <div id="hage"></div> <script> function f(query) { try { var result=document.evaluate(query,document,null,9,null).singleNodeValue.parentNode; return [result,result.parentNode]; } catch(e) { return e; } } </script> <p> </p></body></html>

Operaのuser js内でのxpath検索がうまくいかない。読み込みタイミングの問題?

opera.postError(document.evaluate('//body',document,null,9,null).singleNodeValue); たとえばこんなコードをuser jsに書くとnullが帰ってくる。 しかしアドレスバーにjavascript:(同じコード)って入力するとちゃんと取れる。 window.onload内で呼ぶと期…

jsで遅延評価

js

課題をやっていたはずなのになぜかこんなものができてしまった。ふしぎ。 function Promise(x) { this.cache=null; this.force=function() { if(this.cache==null) this.cache=x(); return this.cache; } } function tarai(x,y,z) { if(x<=y) return y; retu…