继承多态

原型链:多个对象的原型互相调用形成的链式结构
函数有prototype
任何东西都有_proto_


最简单的
子函数的原型=父元素的实例
Call和apply的区别  前者是直接传参  后者是传数组
Call和apply的效果  改变其他函数内部的this指向

完全继承
//要复制的函数原型
function add(a,b){
    return a+b;
}
(function(){
    function obj(fn, newfn, obj){}
    obj.prototype=fn.prototype;
    newfn.prototype=new obj();
})();



//函数嵌套,call和apply三个改变this的指向,一般this指向window/调用对象/new出来的对象
			function parent(oName){
				this.name=oName||'Jack';
				this.skill=function(){
					console.log('inner');
				}
			}
			parent.prototype.skill=function(){
				console.log('swimming');
			}
			var obj=new parent();
			console.log(obj.skill()+'AAAAAAAAAAAAAA');
			function son(){}
			son.prototype=new parent();//继承父元素,不使用直接相等parent.prototype,因为会改变父亲原型
			son.skill=function(){
				console.log('sonsskill');
			}
			var Son=new son();
			console.log(Son.skill()+'BBBBBBBBBBBBBB');
function add(a,b){
				
				this.age='12';
				this.sex='male';
				console.log(this+'add里边的');//this指向了jian对象,因为是jian调用了它
				return a+b;
			}
			function jian(a,b){
				var sum=add.call(this,a,b);//this还是指向new出来的oJian
//				var sum=add.apply(this,[a,b]);与上边区别就是参数是数组
//				call和apply无法取到原型的方法
				this.name=sum;//this指向new出来的oJian
			}
			var oJian=new jian(1,2);
			console.log(oJian.name+'name');
			console.log(oJian.sex+'sex');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值