欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

在 JavaScript 实现多播事件、属性设置/读取器

程序员文章站 2022-03-31 17:43:03
...
做了个有趣的实验,网上大多都是用 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实现面向对象中的属性和事件,也是一件很优雅的事情。不过关于多播事件,不知园友有没有什么好主意?

相关标签: JavaScript