日期:2014-05-16  浏览次数:20415 次

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