我们今天来学习一下js的继承。
原型链继承拷贝继承例子:
Person.prototype={
constructor:Person,
say:function(){
console.log("你好")
},
run:function(){
console.log("正在进行百米冲刺")
}
}
有的时候想使用某个对象中的属性,但是又不能直接修改它,于是就可以创建一个该对象的拷贝
var o1={age:2}
var o2=o1;
o2.age=18;
创建一个03对象的拷贝(克隆):for .... in循环
var 04={}
for(var key in 03){
var value=03[key];
04[key]=value;
}
04.name="李四"
console.log(04);
浅拷贝与深拷贝浅拷贝只是拷贝一层属性,没有内部对象
深拷贝利用递归原理,将对象的若干层属性拷贝出来
拷贝也是继承
封装拷贝继承函数对象扩展运算符(es6)function extend(source,target){
for(var key in source){
var value =source[key];
target[key]=value;
}
}
var o3={gender:"男"}
var o4={};
extend(o3,o4);
o4.gender="女"
console.log(o4);
var source={name:"李白",age:15}
//target是一个新对象,同时拥有了name,age属性
var target={...source}
var target2={...source,age:18}
原型式继承(道格拉斯)函数的call,apply的调用方式Object.create(null)(空对象)
应用场景:对象什么属性也没有
var parent={age:18}
var student=Object.create(parent);
例子:
function Animal(name,age){
this.name=name;
this.age=age;
}
function Person(name){
//目的:将Animal函数的this指向
Animal.call(this,name)
等价于:
Animal.apply(this,[name])
this.say=say;
}
注意:Animal(父类构造函数)的代码必须完全适用于Person(子类构造函数)
好了,今天的继承就讲到这里了,觉得有用的话就关注暖夕H2,我会继续给大家带来技术干货~~
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved