js相关代码中的视图模型函数名问题

View Model function name issue in js related code

本文关键字:模型 函数 问题 视图 代码 js      更新时间:2023-09-26

我不熟悉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;
            }
        }
  1. RandomNumberGameViewModel()是一个函数的名字吗?
  2. 我猜Level()是一个函数名,那么GenerateRandomNumber()是什么?如果两者都是函数,那么为什么一个与self关键字前缀固定,而另一个不是?

请解释一下我在这里高亮显示的代码。

谢谢

技术上,Level 应该在之前加上varself.。我不知道作者是什么意思,但在我看来,有两种可能性:

  1. Level应该是RandomNumberGameViewModel内部的私有函数,因此应该读取var Level = ...

  2. Level应该是RandomNumberGameViewModel"类"上的公共函数,因此应该读取self.Level = ...

正如这里所讨论的,你不应该忽略变量的var:var关键字的目的是什么,什么时候使用它(或省略它)?

如果你有兴趣学习更多关于JavaScript中的OOP(和其他有用的模式),你应该阅读http://addyosmani.com/resources/essentialjsdesignpatterns/book/,我认为它解释得很好。