2011.01.11(2)——— javascript new以及继承的理解(补充)

2011.01.11(2)——— javascript new以及继承的理解(补充)

看了一下javascript权威指南 收获如下:

1、

function XiaoDu(){
	this.name = "xiaodu";
	this.age = 22;
}

var o = new XiaoDu();

alert(XiaoDu.prototype.constructor);
alert(o.constructor)


结果 都为
function XiaoDu(){
	this.name = "xiaodu";
	this.age = 22;
}



这个流程是:
XiaoDu.prototype = {constructor: this};
var o = new Object();
o.constructor = XiaoDu.prototrype.constructor;
o.name = "xiaodu"
o.age = 22;



几句重要的话

A:每一个函数在定义时,都会创建一个原型对象,并且将这个对象赋给函数的prototype属性
B:在原型对象创建之初,它包含一个constructor属性,用来引用函数,也就是{constructor: this},所以 XiaoDu.protorype.constructor就是XiaoDu这个函数
C:每个对象都有一个constructor属性
D:constructor属性是从原型对象继承来的




2、

function Person(){
	this.name = "123";
	this.sex = "f"
}

function XiaoDu(){
	this.name = "xiaodu";
	this.age = 22;
}


XiaoDu.prototype = new Person();

var o = new XiaoDu();

alert(o.name);//xiaodu
alert(o.sex);//f
alert(XiaoDu.prototype.constructor);
alert(o.constructor)


后两个结果都为:
function Person(){
	this.name = "123";
	this.sex = "f"
}



流程大概是:
Person.prototype = {constructor: this};
XiaoDu.prototype = {constructor: this};

var poo = new Object();
poo.constructor = Person.protorype.constructor;
poo.name = "123";
poo.sex = "f";

XiaoDu.prototype = poo;

var xoo = new Object();
xoo.constructor = XiaoDu.protorype.constructor;
//相当于 xoo.constructor = poo.constructor;
xoo.name = "xiaodu";
xoo.age = 22;

var o = xoo;


总结:
A:原型对象 其实就是以谁为原型 XiaoDu.prototype = new Person(); 就是以Person为原型
B:查找属性时 先从改对象中找  如果没有 再从构造函数的原型对象找













你可能感兴趣的:(JavaScript,.net,Blog,prototype,F#)