但是在非 ie 的浏览器下,你可以尝试运行以下代码:
view sourceprint?function person()
{
var _name
,_age,_sex;
var _namechanged = new array();
this.__definegetter__(namechanged,function()
{
return _namechanged;
});
this.__definesetter__(namechanged,function(value)
{
_namechanged.push(value);
});
this.__definegetter__(name,function()
{
return _name;
});
this.__definesetter__(name,function(value)
{
if(this.namechanged != null)
{
for(var f in _namechanged)
{
_namechanged[f](value);
}
}
_name = value;
});
this.__definegetter__(age,function()
{
return _age;
});
this.__definesetter__(age,function(value)
{
_age = value;
});
}
person.prototype =
{
get sex()
{
return _sex;
},
set sex(value)
{
_sex = value;
}
};
var person = new person();
person.namechanged = function()
{
alert(event 1);
}
person.namechanged = function()
{
alert(event 2);
}
person.name = treenew;
person.age = 22;
person.sex = man
alert(the + person.name + age is + person.age + . the sex value is + person.sex);
alert(person._sex); //undefined
所以,用javascript实现面向对象中的属性和事件,也是一件很优雅的事情。不过关于多播事件,不知园友有没有什么好主意?
