次のようなコードでJavaScriptの「new」演算子をシミュレートしようとしました。
Function.method('new', function ( ) {
var objPrototype = Object.create(this.prototype);
var instance = this.apply(objPrototype, arguments);
return instance;
});
ただし、すべてのケースをカバーするには、returnステートメントは次のようになります。
return (typeof instance === 'object' && instance ) || objPrototype;
今度はテストのために:
var SomeClass = function (param1, param2) {
this.param1 = param1;
this.param2 = param2;
};
var test1 = String.new('test1'); //in this case, the "instance" variable is an object
var test2 = SomeClass.new('test1', 'test2'); // in this case, the "instance" variable is undefined
これはまさに「新しい」演算子が行うことですか?カバーするケースは残っていますか?