我是Java语言的新手,最近需要支持它。谁能帮我理解以下编码?

var proj = proj || {};
(function () {
    var functA = function () {
        var base = {};  // I don't understand from this line
        base.getString = this.getString;
        this.getString = function () {
            var strings = base.getString.call($this);
            return strings.concat(["ab","cd","ef"]);
        };
    };
})();


我对getString函数很困惑。谁能解释一下它的目的?另外,这种编码风格是否有名称,或者有人可以引导我阅读有关这种编码风格的文章吗?

非常感谢。

最佳答案

在Javascript中,花括号定义了作用域(如方法定义中)和对象类型(Ruby人们称其为哈希,Python人们称其为字典)。您感到困惑的那一行是将变量声明为空对象。

之后,程序员将函数添加到其新对象。 Javascript疯狂地抛出了引用,因此程序员已将base.getStrings设置为指向他们稍后定义的getStrings函数的别名。

至于功能本身的用途,我最好的猜测是它正在生成测试数据,但是如果不了解整个代码库,就不可能说:

var strings = base.getStrings.call($this)行似乎是使用来自另一个作用域的字符串作为方法的种子。我不知道$this指的是什么,但是直觉告诉我,它是对外部范围的this的引用,该范围也具有getStrings方法。

call()方法执行功能,并将this关键字的分辨率强制为第一个参数,在本例中为$this。由于base.getStringsthis.getStrings的别名,因此程序员可以使用此技巧将调用强制为$this.getStrings,从而避免了无限递归。

关于javascript - JavaScript编码风格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24762342/

10-12 00:55