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