一、手写new
/*
clazz - 需要构造的函数
args - 构造函数的参数
*/
function myNew(clazz,...args){
let obj = {} // 创建一个要返回的对象
obj.__proto__ = clazz.prototype // 将对象的原型链指向构造函数的prototype属性
var res = clazz.apply(obj,args) // 执行构造函数
return res === 'object' ? res : obj // 返回对象
}
二、Es6的对象继承
class Animal{ //创建一个类
eat(){
return 'eat'
}
}
class Dog extends Animal{} //创建另一个类继承Animal
let dog = new Dog()
console.log(dog.eat()); // 打印出eat
三、Es5的对象继承
function Animal(){} //创建一个类
Animal.prototype.eat = function(){
return 'eat'
}
function Dog(){}
Dog.prototype.__proto__ = Animal.prototype //继承Animal
let dog = new Dog()
console.log(dog.eat()); //打印出eat
253

被折叠的 条评论
为什么被折叠?



