首先:JavaScript中没有继承这个官方的用法,只有使用代码来实现继承的效果
对于原型式继承来说,有两种方法:
- 使用嵌套构造函数的方式
- 使用Object.create()方法
构造函数嵌套方式
/*
定义一个函数 - 用于实现对象之间的继承
* 参数
* obj - 表示继承关系中的父级对象
* prop - 对象格式,表示继承关系中的子级对象的属性和方法
*/
function fn(obj,prop){
// 定义一个临时的构造函数
function Fun(){
for(var attrName in prop){
// console.log(prop[attrName]);
this[attrName]=prop[attrName];
}
}
// 将函数的参数作为构造函数的原型
Fun.prototype=obj;
// 将构造函数创建的对象进行返回
return new Fun();
}
var obj={
name:'张无忌'
}
// 调用函数
var result=fn(obj,{
age:18,
sayMe:function(){
console.log('this is function');
}
});
console.log(result.age);
result.sayMe();
如上述代码所示,父级对象为obj,设置一个对象result用来新增属性和方法,函数fn负责将新增的属性和方法遍历到obj里从而完成子对象对obj的继承
使用Object.create()方法
// 利用Object.create()方法实现继承
var obj={
name:'张无忌'
}
var newObj=Object.create(obj,{
age:{
value:18
},
sayMe:{
value:function(){
console.log('this is function');
}
}
});
console.log(newObj.age);
newObj.sayMe();
还是使用obj作为父级对象,通过该方法向obj里新增属性方法并转化为一个新对象输出