JavaScript

prototype.js Element Methods hideの実装

例によってprototype.jsを使わずに最小限で実装してみました。 もっと削っていけば理解も深まると思います。 applyとかをきちんと理解できるかがミソでしょうか。。 <script> function $(element){ if(typeof element == 'string') element = document.getElementByI…

prototype.js Enumerable each inject

グローバル変数が曲者でした。prototypeを使わずにinjectを記述してみます <script> Array.prototype._each = function(iterator){ for(var i=0, l=this.length; i

prototype.js 復習 Enumerable each _each

Gaucheを非常にゆっくりな速度で勉強しているが、それのおかげでプログラミングの考え方とかをきちんと身につけることができている気がする。 以下はprototype.jsの復習。以前に分析したときより自然にコードを読めたので書きとめておきました 1:配列の中身…

タイマーを作る。

取り急ぎ必要になったので JavaScriptの変数のスコープをあまり理解できてないことに気づいてしまった。 <script> window.onload = function(){ init(); } function init(){ document.time.sec.value=10; } var id = setInterval(test, 1000); function test(){ var …

Prototype.js分析

Scheme 高階関数 Enumerable 高階関数をやりこむとスムーズに理解できます。 <script> var array = [1,2]; Array.prototype.each = function(iterator){ var index = 0; this._each(function(value){ iterator(value, index++); }); // for(var i=0; i

フィボナッチ数列

何の変哲もないですが。。 つい最近Gauche本が出たのでそれに取り掛かりました。ついでに今までのWindows環境一辺倒をやめて休眠状態にあったLinuxをメインにするよう取り組んでいます。Macほすぃけどお金が。。 <script> function fib(n){ if(n == 0) return 0; els…

prototype.js分析

Element.setStyle prototypeオブジェクトはnewしないとアクセスできないので、createとテスト用のiteratorは別個に拡張する。 参考サイト http://www.thinkit.co.jp/cert/article/0702/15/7/2.htm <script src="./prototype1.6.js"></script> <script> var Box = Class.create(); Box.prototype = { initialize…

DOM

Option selected, オプションの追加 メモ的にエントリ <script> function test(){ document.form01.sel.options[1].selected = true; document.form01.sel.options[2] = new Option('aaaa', 'uhho-' ); } </script> <form name="form01" id="form01"> <select name="sel"> <option value="foo">foo <option value="bar">bar </select><br> <…</form>

テーブル移動再掲

地道に書きました。DOMに関して理解は深まってきた感じ <script type="text/javascript"> function moveUp(oj){ if(oj.parentNode.parentNode.id != '001'){//一番目の行対策 var cloneObj = oj.parentNode.parentNode.cloneNode(true); var tbodyNode = document.getElementById('tbody_nod…

prototype.jsソースコード分析

prototype.jsを使わずにEnumerable inject近辺 inject(「射出する」といった意味)メソッドを使って配列をオブジェクトに変換する。なぜarray.pushをしたような結果が出てくるのかがイマイチ理解できないでいたが、整理してみるとまぁ当たり前の結果が当たり…

DOM

テーブル項目の入れ替え 必要性から自分で書いてみました。 作ってはみたものの、もうDraggableにぐりぐりやれるものを書けないとダメなんでしょうね。。 きちんと整理しきれていませんがコピペで動作すると思います <script type="text/javascript"> function moveUp(oj){ var cloneObj = o…

DOMに関して

タグの間にスペース、改行などがあると。。 IEとFireFoxでは挙動が変わる。(ずいぶんと悩まされた) useragentの違いをそろそろ把握しないといかん <div id="nospace"><a href="hoge">hoge</a></div> <div id="space"> <a href="moge">moge</a> </div> <script> var nospace = document.getElementById('nospace'); var space = document.getElementById('sp…

prototype.jsソースコード分析

Enumerable => collect eachメソッドと_eachメソッドを経由する箇所をまとめて書くと以下のようになる。 まだまとめ切れていない感じもあるが、そういった経過を載せる方が情報としては価値があるケースもあると思います。 <script> Array.prototype.collect = funct…

Enumerableのeach, _eachまわりの整理(prototype.jsソースコード分析)

前回までElement近辺を探っていたが行き詰ったのでとりあえずストップし、分かるところに立ち返ってさらに掘り下げて行くのと、実際にアプリケーションなりを作っていってみようと思います eachを分かりやすくソースコードに近づけていく。 この形でhogeでは…

prototype.jsソースコード分析

__proto__あたり 図解入りのサイトを以下にあげます(感謝) http://www.mollypages.org/misc/js.mp http://d.hatena.ne.jp/guccyon/20071109/ <script> var Parent = function(){}; var myobj = new Parent(); w(myobj.__proto__ === Parent.prototype); //__proto__…

prototype.jsソースコード分析

Element近辺 DOM操作のあたりにはいっていきたいが、いわゆる「コアJavaScript」と「クライアントサイドJavaScript」の区別をきちんとしないといけないのかな??→調べます>< <div id="here">hoge</div> <script> Object.extend = function(destination, source){ for(p in source){ des…

prototype.jsソースコード分析

Enumerable -> eachまわり prototype.jsを使わずにそれらしくする <script> var array = ['aaa', 'bbb']; for(var i=0; i<array.length; i++){ (function(key, value){ alert(key + ':' + value); })(i, array[i]) } </script> prototype.jsチックに実装してみる。 オブジェク…

prototype.jsソースコード分析

改めてEnumerableのeachメソッド 「iterator.bind」のiteratorにはbindメソッドが実装されているFunctionクラスの引数がこなければならい。contextにはbindしたいオブジェクトということでしょうか var Enumerable = { each: function(iterator, context) { …

prototype.jsソース分析

Enumerable近辺を理解するために bindを把握する。prototype.jsを使わずに必要部分を抜き出してみる。 以下をコピペで動作します。(そのはず;) <script> Object.extend = function(destination, source){ for(var p in source){ destination[p] = source[p]; } retu…

JavaScript

Enumerable 「enumerate」は「列挙する」といった意味があるので配列操作のメソッドがイメージできると思う。 prototype.jsの826行目のextendメソッドで、prototype.jsをインクルードすると同時に配列オブジェクトのプロトタイプを拡張して、587行目からのEn…

prototype.js

継承その2 <script> var Nabe = function(){ this.initialize.apply(this, arguments); } Nabe.prototype = { initialize : function(dasi, yasai){ this.dasi = dasi; this.yasai = yasai; }, toString : function(){ var cook = []; cook.push(this.dasi, this.yas…

prototype.js

こう書けばすっきり、ということにようやく気づく <script> var Nabe = function(dasi, yasai){ this.initialize.apply(this, arguments); }; Nabe.prototype = { initialize : function(dasi, yasai){ this.dasi = dasi; this.yasai = yasai; } }; var fuguchiri = …

prototype.js

prototype.jsを使わない継承 <script> var Nabe = function(dasi,yasai){ this.dasi = dasi; this.yasai = yasai; } Nabe.prototype = { toString : function(){ var cook = []; cook.push(this.dasi, this.yasai); return cook.join('/'); } } //var fuguchiri = ne…

prototype.jsのソースコードをば。。

周回遅れを取り戻すべく読み始める。 prototype.jsを使ったクラス var Animal = function(name){ this.name = name; } Animal.prototype = { sayName : function(){ alert(this.name); } } var dog = new Animal('Taro'); dog.sayName(); 一般的なクラスを作…