2009年07月11日

closureをお勉強(javascript編)

javascriptのクロージャーが面白そうなので、お勉強。


典型的には、クロージャはある関数全体が他の関数(以下、エンクロージャ)の内部で宣言されたときに発生し、内部の関数はエンクロージャのローカル変数(レキシカル変数)を参照する。実行時に外部の関数が実行された際、クロージャが形成される。クロージャは内部の関数のコードとエンクロージャのスコープ内の必要なすべての変数への参照からなる。

クロージャはプログラム内で環境を共有するための仕組みである。レキシカル変数はグローバルな名前空間を占有しないという点でグローバル変数とは異なっている。またオブジェクトのインスタンス変数とは、オブジェクトのインスタンスではなく関数の呼び出しに束縛されているという点で異なる。

クロージャは関数型言語では遅延評価やカプセル化のために、また高階関数の引数として広く用いられる。

というものらしい。 という事で、下にクロージャーを使ったテストプログラムを作ってみた。続きを読む


posted by purigen at 01:06| Comment(0) | TrackBack(0) | javascript | このブログの読者になる | 更新情報をチェックする

2009年06月23日

javascriptで英単語抽出


javascriptで簡単な英単語抽出をやってみました。 別に特別な事はしてないんだけど、なんとなく作ったので一応ブログにUP。
◆ソース

<script type="text/javascript">
function word_hash(str)
{
var word_container = [];
var sp = str.split(/[ ,.;:`']/);

for(var i = 0;i < sp.length;i++)
{
if(word_container[sp[i]] == undefined)
{
word_container[sp[i]] = 1;
}else{
word_container[sp[i]] += 1;
}
}

return word_container;
}

function word_select()
{
word_container = word_hash($("#word").text());
var tmp = '';
for(var k in word_container)
{
tmp += k+':'+word_container[k]+'<br>';
}
$('#hash_result').html(tmp);
}
</script>
・単語抽出元<br>
<div id="word">Either the well was very deep, or she fell very slowly, for she had plenty of time as she went down to look about her and to wonder what was going to happen next. First, she tried to look down and make out what she was coming to, but it was too dark to see anything; then she looked at the sides of the well, and noticed that they were filled with cupboards and book-shelves; here and there she saw maps and pictures hung upon pegs. She took down a jar from one of the shelves as she passed; it was labelled `ORANGE MARMALADE', but to her great disappointment it was empty: she did not like to drop the jar for fear of killing somebody, so managed to put it into one of the cupboards as she fell past it. </div>
<input type="button" onclick="word_select();" value="単語抽出"><br>
・単語(単語:出現数)<br>
<div id="hash_result"></div>

◆実行
 ・単語抽出元
 
Either the well was very deep, or she fell very slowly, for she had plenty of time as she went down to look about her and to wonder what was going to happen next. First, she tried to look down and make out what she was coming to, but it was too dark to see anything; then she looked at the sides of the well, and noticed that they were filled with cupboards and book-shelves; here and there she saw maps and pictures hung upon pegs. She took down a jar from one of the shelves as she passed; it was labelled `ORANGE MARMALADE', but to her great disappointment it was empty: she did not like to drop the jar for fear of killing somebody, so managed to put it into one of the cupboards as she fell past it.


 ・単語(単語:出現数)
 


posted by purigen at 01:36| Comment(0) | TrackBack(0) | javascript | このブログの読者になる | 更新情報をチェックする

2009年06月14日

GreasemonkeyでjQueryを使用する方法

jQueryが便利過ぎて、Greasemonkeyを書く時も使いたい!!っという事で、
一番簡単に使えるようにする方法を。

// Add jQuery
var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);

// Check if jQuery's loaded
function GM_wait() {
if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
else { $ = unsafeWindow.jQuery; letsJQuery(); }
}
GM_wait();

// All your GM code must be inside this function
function letsJQuery() {
alert($); // check if the dollar (jquery) function works
}

内容はすごくシンプルで、HEADタグにjQueryのロードタグを追加させてしまうという方法ですね。
ラベル:jquery greasemonkey
posted by purigen at 01:47| Comment(0) | TrackBack(0) | javascript | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。