Javascript 好的部分,扩充类型

Javascript 好的部分,扩充类型,javascript,prototype,this,Javascript,Prototype,This,我有一个让人想起的问题 特别是在“JavaScript:好的部分”的第33页,我们有以下内容: Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; } String.method('trim', function () { return this.replace(/^\s+|\s+$/g, ''); }); console.log( "

我有一个让人想起的问题

特别是在“JavaScript:好的部分”的第33页,我们有以下内容:

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

String.method('trim', function () { 
  return this.replace(/^\s+|\s+$/g, ''); 
});


console.log( "foo  ".trim() ); // Not in "JavaScript: The Good Parts" but added for discussion.
返回此项的目的是什么函数.prototype.method中-是允许“点链接”还是“以级联方式编程”,如第49页顶部所述


另外,系统如何知道这个指的是string.method中的字符串literal“foo”

它用于启用点链接或在对象上创建多个方法的流畅方法

例如

String
  .method('one', function(){})
  .method('two', function(){})....

除非您使用call/bind/apply,否则它总是指方法名称左边的点左边的单词。注意,如果没有点,因此在点的左边没有单词,那么你可以假装“窗口”在那里,然后这指的是窗口。称为原型的方法稍有不同,因为它指的是实例,而不是整个原型对象,但这是因为该方法假装被实例“拥有”。请注意,Douglas Crockford尚未生成正确执行“经典继承”的文档或演示文稿。他担心封装会有隐私,然后用任意方法修改他不拥有的对象,从而破坏封装。声明父构造函数不能重复使用,并创建父构造函数的实例用作Child.prototype。有关构造函数和原型的更多信息,请参见此处: