此博文参考天涯的Blog 的《关于js原型(prototype)》:http://hi.baidu.com/sky000/blog/item/19723dc75f6664d0d0006041.html
var a = function(){};
var b = new a();
a.prototype={
m: function(){alert(123)},
n: function(){alert(456)}
}
b.n();
报错,为什么呢?当执行var b = new a()时候,b继承了a的默认原型,而a.prototype ={}则修改了a的原型,所以b.n()并没有定义。 解决问题的方法有两种:
第一。 把a.prototype ={}放在 var b = new a()的前面
第二。 使用a.prototype.n = function(){alert(456)} 的形式
第三. 使用Function.prototype.method:
Function.prototype.method = function(name,fn){
this.prototype[name] =fn;
}
var a = function(){};
var b = new a();
a.method("n",function(){alert(123)})
b.n();
其中this指的是Function.prototype ,关于这个的理解参看http://freejava.javaeye.com/blog/691633
转载于:https://blog.51cto.com/helloyxw/716559