如何在javascript中使用构造函数返回实例或其他?

时间:2015-01-02 13:43:04

标签: javascript constructor

我的班级定义:

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

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

如何在构造函数中返回与Scregal实例不同的内容?有可能吗?

2 个答案:

答案 0 :(得分:2)

可以从构造函数返回隐式this以外的值。但是,您只能返回对象,而不是原始值。原始返回值将被忽略,而原始this将被返回。

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

答案 1 :(得分:1)

您可以从构造函数返回任何对象,该对象将被视为创建的值。 (如果返回基元,它将被忽略,并且将返回实际创建的对象。)

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());

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