05/25: Javascriptでオブジェクト指向に挑戦
プロトタイプ(prototype)によるJavaScriptのオブジェクト指向
最初、インスタンスは暗黙で参照になるのに、できたインスタンスの値を変更すると、参照にならない。
サンプル:
*2: メソッド内で、親クラスなどのメソッドを使いたいときはインスタンスを作成しないとうまく動かない。
*3: しかし、メソッドからプロパティを変更するときはprototype。
すなわち、あるオブジェクトがプロパティを評価された時、自分自身がそのプロパティを持っていなければ、暗黙の参照をたどって、その先のオブジェクトのプロパティを評価します。参照がJavascriptは変。
最初、インスタンスは暗黙で参照になるのに、できたインスタンスの値を変更すると、参照にならない。
サンプル:
// Constructor (何もできない?) var Validator = new Function(); // Declare Properties Validator.prototype.regExpPatterns = new Object(); // *1 Validator.prototype.errMsgs = new Object(); // Declare Methods Validator.prototype.validate = function(elm, ptn, msg) { var _parent = new Validator(); // *2 var _str = null; if(!ptn && elm.name && _parent.regExpPatterns[elm.name]) { ptn = _parent.regExpPatterns[elm.name]; } ... } Validator.prototype.setAlertErr = function(bool) { Validator.prototype.alertErr = bool; //*3 } Validator.prototype.getAlertErr = function() // getterは意味がない? { var _parent = new Validator(); //*2 return _parent.alertErr; } //*** How to use *** var myValidator = new Validator(); // インスタンスを作成 myValidator.regExpPatterns["account_id"] = "[0-9]"; //プロパティを変更 myValidator.setAlertErr(false); //セッターを使用*1: プロパティやメソッドを追加するのに、prototypeを直接使うのはECMAScriptに準拠しない、がIEやFirefoxでは動く。ネームスペースを考えると、このやり方のほうがベターに思う。
*2: メソッド内で、親クラスなどのメソッドを使いたいときはインスタンスを作成しないとうまく動かない。
*3: しかし、メソッドからプロパティを変更するときはprototype。
05/25: Firefox > Web テストツール
Selenium IDE: Selenium IDE
Firefoxのプラグイン(extension)として動きます。
Firefoxのプラグイン(extension)として動きます。