JavaScript教程 / 面向对象编程 / 实例对象与 new 命令 / new 命令的原理
1. 示范
function _new( constructor
, params
) {
var args
= [].slice
.call(arguments
);
var constructor
= args
.shift();
var context
= Object
.create(constructor
.prototype
);
var result
= constructor
.apply(context
, args
);
return (typeof result
=== 'object' && result
!= null) ? result
: context
;
}
function Person(name
, age
) {
this._name
= name
;
this._age
= age
;
}
var person
= _new(Person
, '张三', 24);
person
;
2. 自行实现(另一种思路)
function _new( cons_
, params
) {
var args
= [];
for (var i
= 1; i
< arguments
.length
; i
++) {
args
.push(arguments
[i
]);
}
var obj
= Object
.setPrototypeOf({}, cons_
.prototype
);
cons_
.apply(obj
, args
);
return obj
;
}
function Person(name
, age
) {
this._name
= name
;
this._age
= age
;
}
var person
= _new(Person
, '张三', 24);
person
;
转载请注明原文地址: https://lol.8miu.com/read-28197.html