日期:2014-05-16  浏览次数:20321 次

js prototype 和constructor

?prototype 是只有在new 出现的时候在会起作用

?

?

?

function A()
{
		this.ab = function ()
	{
		alert("ab方法");
	}
};
A.prototype.abc = function()
{
	alert("abc方法");
};

var  B  = new A();

B.ab();
B.abc();

?

为什么这俩个方法都可以找的到呢?

一般的疑问是在B.abc();为什么可以找的到,

而实际上B.ab();找的到才是转了很多个弯才实现的.

因为prototype这个属性的定义就是在new的时候prototype下面有constructor的方法都可以找的到,

那为什么B.ab();也找的到呢,一般情况我们认为是通过A的constructor找到的.

其实不是这样的.他是通ab()在创造出来的时候直接赋给了A.prototype.ab();

然后在通过prototype的constructor方法传给B的constructor的;

B没有prototype属性.


以上是我的理解,仅供参考

?

?