如何在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());
这是否是个好主意是另一个问题。
我的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());
这是否是个好主意是另一个问题。