对象继承

var a=[1,2,3];
var b=a;
b=[1,2,3,4];
alert(a)

继承一:复制继承

children:子类
Parent:父类

attribute:Parent.call(this,name,sex)
//这个一般是指构造函数里的属性,这个值是每个对象都不一样的

method:children.prototype=Parent.prototype->对象的引用(地址是一个,修改会改变其它的值)

 

继承二:类式继承--new构造函数

把JS中的构造函数看做类

Bbb.prototype = new Aaa();//把构造函数也继承了
Aaa:constractor

问题:子类的构造函数也被覆盖成Aaa的;
Bbb.prototype.constructor = Bbb; //修正指向问题

function Aaa(){
	this.name = [1,2,4];
}

Aaa.prototype.showName = function(){
	alert(this.name);
}

function Bbb(){
	Aaa.call(this);
}


/** 解决Aaa的构造函数共享问题
var F = function(){}
F.prototype = Aaa.prototype;
Bbb.prototype = new F();
Bbb.prototype.constructor = Bbb;
**/

var b1 = new Bbb();
b1.name.push(4);

var b2 = new Bbb();

console.log(b2.name)

 

继承一:原型继承--无new的对象

var a={
	name:'小明'
}

var b=cloneObj(a);
b.name='lisa';

b={
	name:'1111'
}

alert(b.name); //就近原则,找不到才到原型链里找
alert(a.name);

function cloneObj(obj){
	var F=function(){};
	F.prototype = obj;
	return new F();
}
posted @ 2016-05-20 16:37  lisa2544  阅读(110)  评论(0编辑  收藏  举报