4

我刚开始阅读 JavaScript: The Good Parts,我已经对 Function.prototype.method 中的“return this”做了什么感到困惑?我了解“这个”和“返回”是如何工作的。'this' 本质上是当前对象的指针,'return' 简单地退出函数,同时输出一个值(如果您描述了任何值);在我们的例子中,“这个”。

这是我引用的代码。

Function.prototype.method = function(name, func) {
    this.prototype[name] = func;
    return this;
}

/* SIMPLE CONSTRUCTOR */
function Person(name, age) {
    this.name = name;
    this.age = age;
}

/* ADD METHODS */
Person.method('getName', function() { return this.name; });
Person.method('getAge', function() { return this.age; });

var rclark = new Person('Ryan Clark', 22);

console.log(rclark.getName()); // string(Ryan Clark)
console.log(rclark.getAge()); // number(22)

我尝试省略“return this”以查看代码是否会中断,但不会?'return this' 究竟是做什么的?我将继续阅读这本书,但我想确保我理解了所有内容。任何帮助将不胜感激。

4

2 回答 2

4

它允许链接,因此您可以执行以下操作:

/* ADD METHODS */
Person.method('getName', function() { return this.name; })
      .method('getAge', function() { return this.age; });
于 2013-11-01T15:18:52.903 回答
1

return this返回method()被调用的对象,并在通过向其添加传递的方法对其进行修改之后。

省略它不会破坏您的代码,但它是一种更好的样式,允许链式方法调用,因此您可以例如:

Person.method('getName', function() { return this.name; }).method('getAge', function() { return this.age; });
于 2013-11-01T15:19:11.080 回答