查看: 3696|回复: 1

[原创发布] js里的attr_XXX

[复制链接]
梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
回帖
1057
发表于 2015-11-26 01:06:11 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
[pre lang="javascript"]Object.prototype.attr_accessor = function (name,callBack) {
        this[name] = function (value) {
                if (value !== undefined) {
                        this['_'+name] = value;
                        callBack();
                        return this;
                } else {
                        return this['_'+name];
                };
        };
        return this;
};

Object.prototype.attr_reader = function (name) {
        var name = arguments;
        this[name] = function (value) {
                return this['_'+name];
        };
        return this;               
}

Object.prototype.attr_writer = function (name) {
        this[name] = function (value) {
                if (value !== undefined) {
                        this['_'+name] = value;
                        return this;
                } else {
                        return undefined;
                };
        };
        return this;
}[/pre]
顺手造了个轮子。类似于ruby的attr_XXX系列方法。带参数就是修改,不带参数就是访问。其中attr_accessor中的callBack是传入一个函数,在属性值被修改的时候触发的回调事件
要注意的是不能再回调事件里写对该事件的修改。不然会成死循环。多个属性的话也不能成环。
另外,对属性的访问和修改可以通过调用"_"+属性名来直接访问

评分

参与人数 1星屑 +66 梦石 +1 收起 理由
余烬之中 + 66 + 1 轮子狂魔

查看全部评分

RM-GUI延期。。。最近被黑心老板压迫T_T
二次元少女的shitake,长着长脸,身高165,蓝色卷双马尾,FCUP,瞳色黑色,病气和御宅属性,是天才少女。

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-11-26 06:25:36 | 显示全部楼层
本帖最后由 taroxd 于 2015-11-26 06:28 编辑

为什么不用 Object.defineProperty?

还是 ES6 的 class 比较方便

点评

作用不同 这个是函数 另外这个最后有返回this  发表于 2015-11-26 08:03
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部