查看: 3246|回复: 6

[已经解决] 脚本问题,index()和_index的区别

[复制链接]
梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2017-10-6 23:09:39 | 显示全部楼层 |阅读模式

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

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

×
Window_Selectable.prototype.index = function() {
    return this._index;
};
MV脚本里面有很多,这样的函数
这个的意义是什么
直接 _index 不就可以使用的吗
为什么非要经过index()

梦石
0
星屑
1816
在线时间
2527 小时
注册时间
2010-10-12
回帖
1336

开拓者

发表于 2017-10-7 02:38:36 | 显示全部楼层
本帖最后由 刺夜之枪 于 2017-10-6 14:12 编辑
index()和_index的区别

_index是Window_Selectable类(class)的一个成员变量(member variables)。index()则 是该类的一个getter函数。

直接 _index 不就可以使用的吗

至少从执行的角度来讲,_index的确可以直接读取/修改。
为什么非要经过index()

这仅仅是一个由开发者(写这个代码的人)定下的规范问题。在许多JavaScript的规范里,私有成员变数(private member variables)的表示方式是在变量名前面加一个‘_’用来直观地表示“这个变量是本类的私有成员变数”。 这样规定了程序的其他地方无法直接获取/修改这个变量。为了读取这个变量则需要创建一个getter函数在你的例子里就是index(),通过调用 xxx.index() 读取私有变量 '_index'。

其作用之一就是对外保持统一的接口 index():假设程序的100个其他地方调用了.index(),当代码需要修改的时候,只要修改getter的内容即可。

拓展阅读:
1. 谷歌JavaScript规范
2. 封装 (Encapsulation)




点评

是的,只要修改getter的内容即可。可是这里是一对一的,不存在其他东西。所以我才说为什么一定要经过index()  发表于 2017-10-7 09:09

评分

参与人数 2星屑 +50 赞 +2 收起 理由
余烬之中 + 50 + 1 我很赞同
玛尔斯 + 1 认可答案

查看全部评分


回复 2 0

使用道具 举报

梦石
0
星屑
34460
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2017-10-7 07:41:16 | 显示全部楼层
def initialize
  @index = 0
end

def index
  return @index
end

点评

MV没有attr_accessor就可以在其他地方读取了。  发表于 2017-10-7 09:11
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
179
在线时间
197 小时
注册时间
2015-12-26
回帖
31
发表于 2017-10-8 21:47:29 | 显示全部楼层
其实无所谓呀,在调用的时候并没有什么区别。

是因为this._index,是一个可写的变量,说不定某个位置调用把值改变了

而用函数封装起来后,说明这里只是单纯的调用,不能对值进行修改。

点评

哦。那也就只是使用习惯的问题吧。自己要是没写错在某个位置把这里值给变了,就没问题了。还是你说的清楚。  发表于 2017-10-10 09:41

评分

参与人数 1星屑 +50 赞 +1 收起 理由
余烬之中 + 50 + 1 认可答案

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部