JavaScript实现多播事件、属性设置的方式

网上大多都是用 function (类似 person.getname()、person.setname())的方式。当然,这是一个通用的方式。

但是在非 ie 的浏览器下,你可以尝试运行以下代码

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;//www.3ppt.com
});
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,IE,prototype,浏览器,F#)