function getClass(name) {
switch (name) {
case 'string': return String;
case 'array': return Array;
default: return Object;
}
}
obj = new (getClass());
所以任何人都可以解释这些代码,我理解新的但是什么是新的()?
答案 0 :(得分:1)
obj = new (getClass());
这意味着:
不带参数调用getClass
函数(getClass()
)。这将返回String
或Array
或Object
,后者就此而言。
在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; }