这个函数该如何理解?
Function.prototype.method=function(name,func){
this.prototype[name]=func;
return this;
};
这个函数该如何理解?
Function.prototype.method=function(name,func){
this.prototype[name]=func;
return this;
};
主要是给对象添加原型属性。。
function MyClass(aa) {
this.aa = aa;
// blabla....
}
MyClass.prototype.getSomeProp = function (name) {
return this[name];
}
为了提高上面这种添加原型属性/方法的效率,就有了给Function原型拓展method的方法了。。。
MyClass.method("getAnother", function(){});
而method中返回this,是为了方便链式语法的使用。。。
Function.prototype.method=function(name,func){
this.prototype[name]=func;
return this;//返回this 是为了链式写法 有点像JQuery那样
};
function a(){
}
a.method('say',function(){
console.log("look me")
}).method('wawa',function(){
console.log("返回this,链式写法")
})
var A = new a();
//a的构造方法指向了Function,a是Function的实例对象,所以a有method方法
console.log(a.constructor)//Function (){}
console.log(A.say())//look me
console.log(A.wawa())//返回this,链式写法
从上面的例子,我想你能看出来 Function.prototype.method 其实是扩展了 Function添加原型(实例)方法。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
给Function对象增加一个扩展原型方法的方法,使用该方法发可以增加Function的新的方法name,并返回该对象本身(看样子是要链式操作)。在日常开发中经常会给一个外部引入类库或方法增加自己的私有方法,但又不希望直接修改原文件或里面代码,而是以一种更加灵活的方法进行扩展,就可以使用以上方式。例如: