做了一個有趣的實驗,網路上大多都是用 function (類似 person.getName()、person.setName())的方式。當然,這是一個通用的方式。
但是在非IE 的瀏覽器下,你可以嘗試執行以下程式碼:
view sourceprint?function Person()
{
var _nameChanged = new Array ();
this.__defineGetter__(NameChanged,function()
{
this.__defineSetter__(NameChanged,function(value)
{
_nameChanged.push( value);
});
this.__defineGetter__(Name,function()
}); this.__defineSetter__(Name,function(value) {if(this.NameChanged != null) { { _nameChanged[f](value); } _name = value; } ); this.__defineGetter__(Age,function() this.__defineSetter__(Age,function(value) { _age =
_age = valueue;
}); } Person.prototype = { }, set Sex(value) { } }; var person = new Person(); person.NameChanged = function
person.NameChanged = function(
person.NameChanged = function());
}
person.NameChanged = function( )
{
alert(Event 2);
}
person.Name = Treenew. alert(The + person.Name + Age is + person.Age + . The Sex Value is + person.Sex);
alert(person._sex); //undefined
所以,用javascript實現物件導向中的屬性和事件,也是一件很優雅的事情。不過關於多播事件,不知園友有沒有什麼好點子?