JavaScript 编码风格

标签 javascript

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

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 编码风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24762342/

相关文章:

javascript - 如何使用 Adob​​e HTML5 Extension 处理本地数据库文件?

javascript - ExtJS 使网格高度为 100%

javascript - 翻转 boolean 变量的简写

javascript - 如何消除由相对路径引起的重复要求?

javascript - process.nextTick 中未定义回调

javascript - 如何过滤对象数组内部的数组?

javascript - Ember.js 在模型属性更改时如何更新链接到帮助程序 URL?

javascript - 了解 carousel.js 中 e 的用法

javascript - 删除数组中的对象元素

javascript - NodeJs : How can I see the log of a NodeJs server running by PM2 in a EC2 instance