我是 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.getStrings
是 this.getStrings
的别名,程序员可以使用此技巧强制调用 $this.getStrings
,从而避免无限递归。
关于JavaScript 编码风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24762342/