/**
* 模拟new的实现
*/
function myNew(target, ...args) {
var obj = {} // 创建一个空白对象
obj.__proto__ = target.prototype // 把target的prototype作为obj的原型
var result = target.apply(obj, args) // 把obj作为target的this,使target调用的时候把属性绑定到obj上
return result instanceof Object ? result : obj // 如果target有返回值且不为null,则返回result,否则返回obj
}
function Animal(name, age) {
this.name = name
this.age = age
return null
}
Animal.prototype.type = 'animal'
var cat = myNew(Animal, 'cat', 10)
console.log(cat, cat.name, cat.type)
模拟new的实现
于 2023-04-20 18:37:58 首次发布
该文章展示了如何使用JavaScript函数来模拟new操作符的工作原理,通过创建一个新对象,设置其原型为构造函数的prototype,然后将构造函数应用于新对象并处理返回值。示例中定义了一个Animal构造函数,并使用模拟的new方法创建了一个实例。
摘要由CSDN通过智能技术生成