JavaScript

JavaScriptのクラスの継承とオーバーライド

とりまソース。スーパークラス::Super.js var Super = function(num) { this.test = "テスト"; this.num = num; alert(num); //@1 this.alert_num = function() { alert(this.num); } this.alert_num2 = function() { alert(this.num * 2); } } サブクラス::…

PHPのtrim()、ltrim()、rtrim()っぽいのを移植してみる

クラスメソッドからの抜粋。 //str::対象文字列 //del::削除文字列(省略されると半・全角スペースを削除) //trim() this.trim = function(str, del) { return str.replace( new RegExp(!del ? "^[ ]+|[ ]+$" : "^" + del + "+|" + del + "+$", "g"), ""); } …

PHPのtrim()っぽいのを作ってみた

//マッチパターンが見えなくなっているが、半・全角スペースを半角スペースに置換。 //スペースが連続している場合はまとめる。 hoge.replace(/^[ ]+|[ ]+$/g, ""); PHPのオリジナルとは違い、文字列の先頭と末尾に存在する連続した半・全角スペースのみを削…

onclickイベントハンドラの内容を動的に変更する

function hoge() { document.getElementById("hoge").onclick = new Function( "hoge1();" ); }

変数をキーとしたオブジェクトの中にオブジェクトを生成していく

Ajaxでjsonを受け取り、それを分解してオブジェクトの中に格納してゆくサンプル。 オブジェクトの中にオブジェクトを作りつつ、そこに格納という手順です。 二次元オブジェクト?二次元連想配列?みたいなの。 あんまし実用性はない。 var myClass = functio…

座標検索メソッドgetLatLngを同期風に動作させる方法

google Maps APIのジオコーディングメソッドgetLatLngは非同期通信なので色々と面倒です。 サンプルソース1*1 var HogeClass = function { this.get_latLon(address) { var geocoder = new GClientGeocoder(); geocoder.getLatLng ( address, function(point…

P126(8.2.1):関数への引数が省略されたかの判断

今までずっとtypeof()を使い、以下の様にチェックしていた。 function hoge(a) { if( "undefined" == typeof(a) ) { alert("引数省略"); } else { alert("引数あり"); } } しかし以下の様に書ける。 function hoge(a) { if(!a) { alert("引数省略"); } else …

正規表現に変数を使う

"abcdefghijklmnopqrstuvwxyz"から"EFG"を大文字小文字を無視して正規表現で抜き出すとする。 var str = "abcdefghijklmnopqrstuvwxyz"; var result = str.match(/EFG/i); alert(result); //efg 問題なく抜き出せるが、マッチパターンが/EFG/とハードコーデ…

P108(7.3):オブジェクトのプロパティへのアクセス方法

object.property object["property"] この2文は等価。 ただし後者はプロパティ名を文字列で指定しているので、例えばループ文で生成した文字列でのアクセスが可能になる。 for(y = 0, cnt = 5; y < cnt; y++) { obj["property" + y] = y; } このような使い方…

P115(7.6.2):配列要素の削除の注意点

配列要素にdelete()を掛けると要素が削除されるのではなく、未定義になるだけ。 var array = new Array("A", "B", "C"); alert(array); //A,B,C alert(array.length); //3 delete(array[1]); alert(array); //A,,C alert(array.length); //3 alert(array[0])…

指定した文字列が何個あるか調べる

http://kuwappa.web2.jp/jstools/wordsChecker/

P82(6.2):複合文

中括弧({})で囲われた範囲が複合文。 複合文末尾にはセミコロンを付けない。 { a = 0; b = 0; c = 0; } 複合文内は1つの文として扱われるが、実行は通常通り1行ずつ行われる。 うーん、今一使い所が分からない。

P52(4.3.1):ブロックレベルのスコープはない

function hoge() { for(var y = 0; y < 3; y++) { alert(y); //0,1,2 } alert(y); //3 } for文の中で宣言された変数yは、for文を抜けても有効。 for文の中でしか有効じゃないと思い込んでいたので目から鱗でした。

P54(4.4):配列の代入は参照渡し

function hoge() { var array = new Array("A", "B", "C"); var pnt = array; alert(pnt); //A,B,C array[0] = "a"; alert(pnt); //a,B,C } あまりこういう書き方はしないんだけれど、しっかり覚えておかないとバグの温床になる予感。

サイ本

し! _ -── ‐- 、 , -─-、 -‐─_ノ 小 未 // ̄> ´  ̄  ̄ `ヽ Y , ´ ) 未 え 学 読 L_ / / ヽ 読 | 生 が / ' ' i !? マ ま 許 / / く ジ で さ l ,ィ/! / /l/!,l /厶, だ れ i ,.lrH‐|'| /‐!-Lハ_ l /-!'|/l /`'メ、_iヽ よ る l | |_|_|_|/| / /__!__ |/!トi…

文字数チェッカーと重複チェッカーを作ってみた

いちいちエクセル立ち上げるとか面倒なのでちょちょいとプログラミング。 文字数チェッカー http://kuwappa.web2.jp/jstools/cntStrLen/ 文字数をチェックして、オーバーしているところを赤字にするだけ。 重複チェッカー http://kuwappa.web2.jp/jstools/re…

replaceでの置換

改行コードを含む文字列 function hoge() { var str = "りんご\nみかん\nバナナ\nみかん"; alert(str); } 変数strの文字列から改行コードを取り除いてみる。 alertした結果は以下。 りんご みかん バナナ みかん しっかり改行されています。 改行コードを取…

チェックボックスやラジオボタン等の値でformのactionを変更

function hoge() { if( "hoge" == document.getElementById("hoge").value ) { document.getElementById("form").action = "hoge1.html"; } else { document.getElementById("form").action = "hoge2.html"; } }

配列の値を連結して文字列に変換

オーバーライドを実装してみる

super.js var Super = function() { this.fnc1= function() { alert('super1'); } this.fnc2 = function() { alert('super2'); } } sub.js var Sub = function(){} Sub.prototype = new Super(); Sub.prototype.fnc2 = function() { alert("sub2"); } サンプ…

idが存在するかを調べる

if( document.getElementById("hoge") ) { alert("ある"); } else { alert("ない"); }

JavaScriptでオブジェクトのメソッドをstatic的にコール

PHP等の と書けるところをJavaScriptでもやってしまおうというお話。 var Hoge = function() { } Hoge.hoge = function() { alert("hoge"); } Hoge.hoge(); とすればできるようです。※ソースのチェックはしていないので雰囲気で感じてください。