js高级4 继承的方法 不破坏其他原型的继承方法 以及继承的应用

	//	原型继承
	function Person(name,age){
		this.name=name;
		this.age=age;
	}
	// 利用原型中的成员可以被和其他相关的对象共享这一特性,可以实现继承
	Person.prototype.sayHello=function(){
		console.log("我想死你了");
	}
	// 1 给原型对象中添加成员(通过对象的动态特性) 不是严格意义上的继承
	var p=new Person("冯巩",50);
	p.sayHello();
	// p对象就继承了原型对象

	// 2  直接替换原型对象。 会将原有原型中的成员丢失
	var parent={
		sayHello2:function(){
			console.log("hello")
		}
	}
	Person.prototype=parent;
	var p2=new Person("赵本山",60);
	p2.sayHello2();  
	// p2.sayHello();  会将原有原型中的成员丢失  p2.sayHello is not a function
	// p对象继承了原型对象(parent)

	// 3 利用混入的方法给原型对象添加成员
	var grandP={
		SayBey:function(){
			console.log("bye")
		}
	}
	for(var k in grandP){
		Person.prototype[k]=grandP[k]
	}
	var p3=new Person("白云","44")
	p3.SayBey();
	// 也是实现了继承

// 继承的方法

	let arr1 =[1,2,3];
	Array.prototype.sayHello=function(){
		console.log("hello")
	}
	console.log(arr1);
	arr1.sayHello();
	// 扩展内置对象 (给内置对象新增成员);  
	// 不推荐 系统共享 会修改他人的内置对象

	// 安全的扩展一个内置对象
	function MyArray(){

	}


	var arr23=new Array();		// 创建数组
	MyArray.prototype=arr23;	// 添加内置对象

	var myArray=new MyArray; 	// 继承自arr23
	myArray.push(1);

	console.log(myArray);  		// 1

	var arr2 = {
		arr2Say:function(){
			console.log("我是arr2");
		}
	}
	 MyArray.prototype=arr2;    // 添加say方法 就自己调用自己的方法

	 var ArrSay=new MyArray;	// 创建构造函数
	 ArrSay.arr2Say();


	 var guodegang={
	 	xiangsheng:function(){
	 		console.log("我来将相声了");
	 	}
	 }
	 MyArray.prototype=guodegang;
	 var guoqiling=new MyArray;
	 guoqiling.xiangsheng();

// 继承的方法2

	function Animail(){
		this.gender="male";
	}

	Human.prototype=new Animail();
	Human.prototype.constructor=Human;

	function Human(){
		this.actionWay="走路";
	}

	Teacher.prototype=new Human();
	Teacher.prototype.constructor=Teacher;
	function Teacher(){
		this.skill="教书";
	}

	BadTeacher.prototype=new Teacher();
	BadTeacher.prototype.constructor=BadTeacher;

	function BadTeacher(){
		this.name="吕超";
	}

	var t=new BadTeacher();
    // 控制台 t.__proto__     继承的应用

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值