1

一直在阅读我最喜欢的程序员之一 Douglas Crockford,尤其是“方法”方法。

JavaScript:

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

myfunc.method('toString', function () { 
    return this.value; 
}); 

var testvar = new myfunc('myself').toString(); 
alert(testvar);  

我对return this.
这里是什么return this意思?
在我读过的内容中,该方法在没有它的情况下有效,称为链接,但我如何使用此“方法”函数使用链接,为什么它有用?

谢谢

4

1 回答 1

4

据我了解。
当您想向您正在扩展的函数(您正在使用的对象)添加多个原型时,更改机制非常有用。
请参阅下面的示例扩展:

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

myfunc
    .method('toString',     function() {return this.value;})
    .method('toStringMore', function() {return this.value + ' more';})
    .method('bothFuncs',    function() {return this.toString() + ' ' + this.toStringMore();});

var testvar = new myfunc('myself');

alert(testvar.toString());
alert(testvar.toStringMore());
alert(testvar.bothFuncs());

如果排除了上述情况return this,则结果是对“方法”函数的第二次和第三次调用将失败。
另外请注意,直到链的末尾没有分号。

希望有帮助

于 2013-02-01T10:16:49.317 回答