2007-07-23

おにゅーの靴

今日はおにゅーの靴で出勤しました。 ^^

...さっそく靴擦れしました。 orz

JavaScriptでOOP

Javaの案件なのに何故かJavaScriptばっかしやってたりする。

今更感もあるけど、JavaScriptのOOPって独特だけど結構書きやすい。

// クラス = 関数オブジェクト
var Animal = function() {};
// prototypeにオブジェクトをつっこんでやることでメソッドを定義
Animal.prototype = {
  cry: function() {},
};
// 継承
// prototypeに親クラスのインスタンスをつっこむ。
var Dog = function() {};
Dog.prototype = new Animal();
// メソッドのオーバーライド
Dog.prototype.cry = function() {
  alert('bawwow');
};
// コンストラクタを中に書く
function createClass() {
  return function() { this.initialize.apply(this, arguments); };
}
var Car = createClass();
Cat.prototype = {
  initialize: function() {
    this.wheels = 4;
  }
};
// OOPとは関係ないけどオブジェクトを名前空間のように使う
var Vadidator = createClass();
Validator.prototype = {
  validate: function() {}
};
var SomePage = {};
SomePage.Validator = function() {};
SomePage.Validator.prototype = new Validator();
SomePage.Validator.prototype.validate = function() {
  // some validation
};
var OtherPage = {};
OtherPage.Validator.prototype = new Validator();
OtherPage.Validator.prototype.validate = function() {
  // other validation
};
// ポリモフィズム
// JavaのClass.forName()みたいなのうまく書けないかなぁ
var ValidatorFactory = {
  create: function(id) { return eval(id + 'Page.Validator()'); }
};
var validator = ValidatorFactory.create('Some');
validator.validate();

型付けが弱い言語なのであれだが、インターフェースや多重継承みたいなのも簡単にできる。

こんな感じでWeb 1.0なJavaScriptを駆逐していきたいんだが...させてくんないだろうなぁ。


«前の日記(2007-07-21) 最新 次の日記(2007-07-24)»

2007年
7月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31