在Function.prototype.method中返回什么呢?

时间:2013-11-01 15:16:15

标签: javascript oop prototype

我刚开始阅读JavaScript:好的部分,我已经对Function.prototype.method中的'返回'做了什么感到困惑?我理解“这个”和“回归”是如何运作的。 'this'本质上是当前对象的指针,'return'只是在输出一个值时退出函数,如果你描述的话;在我们的例子中,'this'。

这是我引用的代码。

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'以查看代码是否会中断,但它不会?究竟什么'回归'呢?我将继续阅读这本书,但我想确保我理解一切。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

它允许链接,所以你可以做这样的事情:

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

答案 1 :(得分:1)

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

省略它不会破坏你的代码,但它是一个更好的样式,允许链式方法调用,所以你可以举例:

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