javascript多播事件、属性设置与读取器(非ie浏览器)

发布时间:2020-05-22编辑:脚本学堂
在非ie浏览器环境下,javascript多播事件、属性设置与读取器的例子,不同于person.getName()、person.setName()的方式。

有关javascript多播事件,网上多是采用function (类似 person.getName()、person.setName())的方式。一个通用的方式。

在非 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实现面向对象中的属性和事件。