手写new关键字
使用new的这个过程执行了哪些 *** 作?看下面的例子:
function Student(name,age) {
this.name = name;
this.age=age;
}
var hmm = new Student('韩梅梅',17);
上述代码就是new了一个Student
那我们来写一下new关键字执行 *** 作
function _new(){
//1.先创建一个空对象
var obj={};
//这里fn是我们的构造函数
var fn=[].shift.call(arguments)
//2.将对象的隐式原型指向父类原型
obj.__proto__=fn.prototype;
//3.apply()执行构造函数的方法
fn.apply(obj.arguments)
//4.返回
return obj
}
function Student(name, age) {
this.name = name
this.age = age
}
var abc = _new(Student, "韩梅梅", 17)
console.log(abc)
这样我们的_new就实现了new关键字的功能
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)