如何在javascript中使用构造函数return实例或其他东西?

How to return instance or sth else using constructor in javascript?

我的class定义:

var Scregal = function(gallery, opts) {
    //some code
};

var scregal = new Scregal('.gallery-box', options);

如何 return 与构造函数中的 Scregal 实例不同?可能吗?

可以从构造函数 return 一个不同于隐式 this 的值。但是,您只能 return 个对象,不能是原始值。原始 return 值将被忽略,原始 this 将被 return 代替。

function A() {
  return 'test'; //primitive
}

new A() !== 'test';
new A() instanceof A; //return value ignored

function B() {
  return new String('test'); //wrapper type
}

new B() instanceof String;
new B() == 'test'; //strict equality (===) wouldn't work

您可以 return 构造函数中的任何对象,该对象将被视为创建的值。 (如果你 return 原语,它将被忽略,实际创建的对象将被 returned)。

function Thing(type) {
    if (type === "date") {
        return new Date();
    } else if (type === "string") {
        return new String("Hello!");
    }
}

console.log(new Thing("date"));
console.log(new Thing("string"));
console.log(new Thing());

这是否是个好主意是另一个问题。