设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3169|回复: 1
打印 上一主题 下一主题

[原创发布] js里的attr_XXX

[复制链接]

Lv1.梦旅人

梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
帖子
1102
跳转到指定楼层
1
发表于 2015-11-26 01:06:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
JAVASCRIPT 代码复制
  1. Object.prototype.attr_accessor = function (name,callBack) {
  2.         this[name] = function (value) {
  3.                 if (value !== undefined) {
  4.                         this['_'+name] = value;
  5.                         callBack();
  6.                         return this;
  7.                 } else {
  8.                         return this['_'+name];
  9.                 };
  10.         };
  11.         return this;
  12. };
  13.  
  14. Object.prototype.attr_reader = function (name) {
  15.         var name = arguments[i];
  16.         this[name] = function (value) {
  17.                 return this['_'+name];
  18.         };
  19.         return this;               
  20. }
  21.  
  22. Object.prototype.attr_writer = function (name) {
  23.         this[name] = function (value) {
  24.                 if (value !== undefined) {
  25.                         this['_'+name] = value;
  26.                         return this;
  27.                 } else {
  28.                         return undefined;
  29.                 };
  30.         };
  31.         return this;
  32. }

顺手造了个轮子。类似于ruby的attr_XXX系列方法。带参数就是修改,不带参数就是访问。其中attr_accessor中的callBack是传入一个函数,在属性值被修改的时候触发的回调事件
要注意的是不能再回调事件里写对该事件的修改。不然会成死循环。多个属性的话也不能成环。
另外,对属性的访问和修改可以通过调用"_"+属性名来直接访问

评分

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

查看全部评分

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

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2015-11-26 06:25:36 | 只看该作者
本帖最后由 taroxd 于 2015-11-26 06:28 编辑

为什么不用 Object.defineProperty?

还是 ES6 的 class 比较方便

点评

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

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 09:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表