您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2025/9/10 6:50:35发布15次查看
做了个有趣的实验,网上大多都是用 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实现面向对象中的属性和事件,也是一件很优雅的事情。不过关于多播事件,不知园友有没有什么好主意?
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product