2

我是 javascript 新手,所以请原谅我提出这样一个新手问题。我一直在尝试通过查看 SPA 示例来学习 javascript 语言,这些示例使用以下库 durandal、knockout js 和微风 js、sammy 和 require,并且我认为我正在尝试使用模块模式。我遇到了不同的代码语法如下

define(['services/logger'], function (logger) {

    var model = "somedata"
    var vm = {
        activate: activate,
        title: 'Details View'
    };

    return vm;
    function activate() {
        logger.log('Details View Activated', null, 'details', true);
        return true;
    }
});

define(['services/logger'], function (logger) {

        var model = "somedata"

    return {
        activate: activate,
        title: 'Details View'
    };

    function activate() {
        logger.log('Details View Activated', null, 'details', true);
        return true;
    }
});

我的问题是

  1. 过度使用一种语法有优势吗?
  2. 上面代码块中的变量“model”会有全局作用域吗?
  3. 从函数中访问“title”变量的最佳方法是什么?我应该使用 this.title 吗?

先感谢您。

4

1 回答 1

1
  1. 语法 2 更容易阅读。它不是将它分配给一个变量并立即返回它,而是只返回值。除此之外,没有任何优势。
  2. “模型”变量将不具有在此特定上下文中定义的全局范围。
  3. 在返回的对象上,您通过 objName.title 调用 title

这回答了你的问题了吗?

于 2013-03-07T17:45:35.973 回答