看下面的例子:
$('button.b').click(function(){ var d = new O1(); d.ooo(); d.oo(); function O1(){ this.ooo = function(){ alert('sss'); } } O1.prototype.oo = function(){ alert('ss'); } }); |
点击按钮,首先会弹出“sss”,标识ooo()执行了,但是,之后会报错:”d.oo is not a function“
具体原因,我猜是这样:
再new O1的对象的时候,回去找O1的构造函数“function O1()”,然后执行这个构造函数的时候,将ooo()方法添加给O1类,但这时并不会执行构造函数之外的东西
而“O1.prototype.oo”会按照顺序,执行完前面的代码后,再添加oo()