var Person = function(name, age) {
this.name = name,
this.age = age
}
function _new(constructor, params) {
// 将arguments对象转换为数组
var args = [].slice.call(arguments);
// 取出构造函数
var constructor = args.shift();
// 创建一个空对象,继承构造函数的prototype属性
var context = Object.create(constructor.prototype);
// 执行构造函数,绑定this值
var result = constructor.apply(context, args);
// 如果返回结果是对象,直接返回,否则返回context对象
return (typeof result === 'object' && result != null) ? result : context;
}
var actor = _new(Person,'张三', 28)
console.log(actor);
实现new方法
最新推荐文章于 2024-01-15 08:09:28 发布