Monthly Archives: 五月 2011

Hello World

js类,构造函数内添加方法,与prototype添加方法的时序差异

看下面的例子:

	$('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()