JavaScript学习笔记

js语法非常之灵活,不仅可以原型继承,而且还可以原型冒充、复制继承

原型冒充

function Cat(leg,tail){
	this.leg = leg;
	this.tail = tail;
	this.climb = function(){alert('我会爬树')};
}

function Tiger(leg,tail,color){
	//把要继承的类的语句拿来执行一遍。
	this.parent = Cat;//把父类构造函数引入到一个parent属性上
	this.parent.apply(this,arguments);
	delete this.parent;

	this.color = color;
}

var tiger = new Tiger(4,1,'yellow');
console.log(tiger);
tiger.climb();
console.log(tiger);

这是什么过程?
答:其实就是再用Tiger造对象时,用Tiger的语句影响一个空对象{},
在Tiger影响空对象之前,先由Cat函数实施影响。
因此,最终得到的对象,是由Cat和Tiger共同作用过的对象。

复制继承

复制继承就是把父对象的所有属性,直接复制到自己身(对象)上

function Cat(leg,tail){
	this.leg = leg;
	this.tail = tail;
	this.climb = function(){alert('我会爬树')};
}

function Tiger(color){
	this.color = color;
	this.extend = function(parent){
		for(var key in parent){
			if(!this.hasOwnProperty(key)){
				this[key] = parent[key];
			}
		}
	}
}

var tiger = new Tiger('yellow');
//tiger.climb();//出错
console.log(tiger);
tiger.extend(new Cat(4,1));
console.log(tiger);
tiger.climb();