我的班级定义:
var Scregal = function(gallery, opts) {
//some code
};
var scregal = new Scregal('.gallery-box', options);
如何在构造函数中返回与Scregal实例不同的内容?有可能吗?
答案 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());
这是否是个好主意是另一个问题。