Project1

标题: 脚本问题,index()和_index的区别 [打印本页]

作者: yang1zhi    时间: 2017-10-6 23:09
标题: 脚本问题,index()和_index的区别
Window_Selectable.prototype.index = function() {
    return this._index;
};
MV脚本里面有很多,这样的函数
这个的意义是什么
直接 _index 不就可以使用的吗
为什么非要经过index()


作者: 刺夜之枪    时间: 2017-10-7 02:38
本帖最后由 刺夜之枪 于 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)





作者: 芯☆淡茹水    时间: 2017-10-7 07:41
def initialize
  @index = 0
end

def index
  return @index
end
作者: diynopose    时间: 2017-10-8 21:47
其实无所谓呀,在调用的时候并没有什么区别。

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

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




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1