新操作员
The new Operator
本文关键字:操作员 更新时间:2023-09-26
是否可以编写遵循以下(有效)类型脚本接口的javascript函数:
interface Foo{
// constructor:
new (): string;
}
即当用新运算符调用时返回字符串的东西。例如以下内容将不起作用。
function foo(){
return "something";
}
var x = new foo();
// x is now foo (and not string) whether you like it or not :)
您应该能够做到:
function foo(){
return new String("something");
}
var x = new foo();
console.log(x);
您可以返回任何对象,但文字不起作用。请参阅此处:构造函数可以返回哪些值来避免返回此值?
ECMAScript 5的第13.2.2节(关于[[Construct]]
内部属性)对构造函数的返回值有这样的说明:
1) 让
obj
是一个新创建的本地ECMAScript对象。8) 设
result
是调用F
的[[Call]]
内部属性的结果,提供obj
作为this
值,并提供传递到[[Construct]]
中的参数列表作为args。9) 如果
Type(result)
是Object
,则返回result
。10) 返回
obj
。
因此,构造函数的返回值只能是一个对象。像"foo"
这样的字符串基元具有String
而不是Object
的Type
结果。这意味着步骤9为false,因此步骤10返回构造的对象,而不是构造函数的返回值。
相反,您必须返回一个对象(new String("foo")
),如RobH的回答中所述。
相关文章:
- 操作员”;新的“;根据我想在几个JavaScript文件中使用的类,在JavaScript中使用
- If语句发布或操作员发布
- jQuery"或“;操作员没有处理mouseleave
- 操作员类型未按预期操作
- 意外的右移操作员行为
- 不断获得"未捕获的类型错误:无法使用'在'操作员搜索'191'"jQu
- <<操作员的班次超过32班
- TypeError:无法使用'在'操作员搜索'SUPPORT_WL_SERVER_CHANGE&
- 嵌套if语句vs&&操作员javascript jquery
- Mongodb动态像操作员一样
- 使用 ||操作员通知
- $in操作员钛 SDK 无法 #appcelerator 工作
- 操作员不工作!=
- TypeScript错误无法使用'在'操作员搜索'_id'用于typescript和pou
- &操作员未在指令的隔离范围内工作
- 圣诞树操作员(>>~)做什么
- <<并且>>操作员做
- Javascript>操作员未在Extension中工作
- Javascript if语句和&&操作员差异
- 未捕获的类型错误:无法使用'在'操作员搜索'7'当我试着比较日期的时候