Node.js模块:引用兄弟函数的正确方法

时间:2011-12-09 22:50:55

标签: javascript node.js

这是我目前的代码:

var PermissionsChecker = {};

PermissionsChecker.check = function(id) {
  PermissionsChecker.getPermissions(id);
}

PermissionsChecker.getPermissions = function(id) {
  // do stuff
}

两个问题:

  1. 这是构建node.js函数的正确方法吗?
  2. .check中的那一行是否是引用兄弟函数的正确方法?
  3. 谢谢!

3 个答案:

答案 0 :(得分:2)

只要使用PermissionsChecker.check()调用该函数,就可以使用this引用该对象。

CodePad

答案 1 :(得分:2)

你上面所做的事情被称为对象文字,但你也可以选择原型方式(当你需要实例化对象时 - OOP的东西)。

你可以在里面调用它来引用另一个对象属性:

PermissionsChecker.check = function(id) {
  this.getPermissions(id);
}

答案 2 :(得分:2)

完全没问题。一些说明:

  • 同级函数实际上并不是同一对象的方法的任何标准术语。小调,但可能引起混淆。
  • 当函数作为某个对象的方法被调用时,该函数内的this值指的是调用它的对象。也就是说,像这样调用check

    PermissionsChecker.check()
    

    ...允许你编写这样的函数:

    PermissionsChecker.check = function(id) {
        this.getPermissions(id);
    }
    

    ......更简洁,可能更常见。

  • 您的问题没有特定于node.js.这也适用于浏览器(或其他任何地方)的JavaScript。

  • 您可以通过重写您的示例来保存一些输入:

    var PermissionsChecker = {
        check: function(id) {
            this.getPermissions(id);
        },
        getPermissions: function(id) {
            // do stuff
        }
    };