什么是新的(getClass())是什么意思?

时间:2017-02-28 12:07:19

标签: javascript frontend

function getClass(name) {
   switch (name) {
      case 'string': return String;
      case 'array': return Array;
      default: return Object;
   }
}
obj = new (getClass());

所以任何人都可以解释这些代码,我理解新的但是什么是新的()?

2 个答案:

答案 0 :(得分:1)

 obj = new (getClass());

这意味着:

  1. 不带参数调用getClass函数(getClass())。这将返回StringArrayObject,后者就此而言。

  2. new的返回值上调用getClass()。在这种情况下,它等同于new Object,它会创建一个新对象。

答案 1 :(得分:1)

您可以使用

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; }