あなたは起こるいただきました、より良い説明
object = new getClass()(); // object = new (getClass());
を使用することができます。関数getClass
を呼び出し、新しいインスタンスのオブジェクトを返します。
function getClass(name) {
switch (name) {
case 'string': return String;
case 'array': return Array;
default: return Object;
}
}
var typeObject = new getClass()(),
typeArray = new getClass('array')(),
typeString = new getClass('string')();
[typeObject, typeArray, typeString].forEach(function (o) {
console.log(typeof o);
if (typeof o === 'object') {
console.log('hasOwnProperty' in o);
console.log('splice' in o);
}
});
.as-console-wrapper { max-height: 100% !important; top: 0; }
括弧は何もしない、彼らは物事をグループ化するためです。それはプログラマーの個人的なスタイルや過度のものであるようです(switchステートメントにも不要なかっこがあります)。 – JJJ
@JJJ間違っています。括弧は、パラメータなしで 'getClass'が呼び出され、' String'のように結果に対して 'new'が呼び出されるようにするために必要です。括弧がなければ、それはコンストラクタとして 'getClass'関数自体を呼び出すでしょう。 –
@torazaburo、あなたはその質問に答えたいですか?これは 'obj = new getClass()();'と同様に動作し、他のスタイルよりも明白です。 –