js相关代码中的视图模型函数名问题
View Model function name issue in js related code
我不熟悉oop在js特定代码中的实现。
我看到这个代码
var RandomNumberGameViewModel = function () {
var self = this;
Level = function (id, identifier) {
return {
id: ko.observable(id),
identifier: ko.observable(identifier)
};
}
self.GenerateRandomNumber = function () {
var number = '';
for (var i = 0; i < self.digitsLimit() ; i++) {
var randomNumber = Math.floor((Math.random() * self.digitsLimit()) + 1);
number += randomNumber;
}
return number;
}
}
-
RandomNumberGameViewModel()
是一个函数的名字吗? - 我猜
Level()
是一个函数名,那么GenerateRandomNumber()
是什么?如果两者都是函数,那么为什么一个与self关键字前缀固定,而另一个不是?
请解释一下我在这里高亮显示的代码。
谢谢
技术上,Level
应该在之前加上var
或self.
。我不知道作者是什么意思,但在我看来,有两种可能性:
-
Level
应该是RandomNumberGameViewModel
内部的私有函数,因此应该读取var Level = ...
。 -
Level
应该是RandomNumberGameViewModel
"类"上的公共函数,因此应该读取self.Level = ...
。
正如这里所讨论的,你不应该忽略变量的var
:var关键字的目的是什么,什么时候使用它(或省略它)?
如果你有兴趣学习更多关于JavaScript中的OOP(和其他有用的模式),你应该阅读http://addyosmani.com/resources/essentialjsdesignpatterns/book/,我认为它解释得很好。
相关文章:
- 如何在视图模型contet更新更新上调用Jquery函数
- Angular,函数在(模型)工厂中返回值
- 将模型从Kendo Mvc UI网格传递到javascript函数
- 模型不是构造函数主干
- 挖空视图模型函数仅影响最后一个实例
- 主干模型:初始化与构造函数
- KnockoutJS:如何避免在applyBindings上运行视图模型函数
- 在IE9中未检测到视图模型函数绑定,但在FF和Chrome中有效
- 在挖空JS中从ATTR调用模型函数以获取动态属性
- 如何在 Laravel 4 中将模型函数从控制器导出到视图
- jQuery UI的“可选” - 需要调用Codeigniter模型函数
- 在范围之外调用 AJAX 成功的淘汰模型函数
- Ember&RSVP:如何解决路由中的嵌套关系's模型函数
- 如何限制angularjs中对模型函数的调用频率
- 如何找到两个输入的模型函数
- 函数未定义,Bookshelf.js模型函数未被识别为函数
- js相关代码中的视图模型函数名问题
- Ember.js模型函数,无法读取属性'的定义
- SailsJs,我怎么能让一个模型函数成为一个承诺,这样我就可以在控制器中排队
- 调用视图中的骨干模型函数