Ash*_*wat 8 javascript constructor date
假设我定义了一个这样的变量
var today = Date();
console.log(today.getMonth()); // Throw Error
Run Code Online (Sandbox Code Playgroud)
而其他类如Error类在没有new运算符的情况下调用它们的方法.
function factorial(x) {
if(x <= 1)
throw Error("x must not be negative");
return x*factorial(x-1);
}
Run Code Online (Sandbox Code Playgroud)
包装器对象(数字,布尔值,字符串)也可以在没有new运算符的情况下调用它们的方法.那么,在调用它们的方法之前,这是唯一需要新操作符或任何对象创建技术的类.
编辑:由于Date()是一个字符串类型,因此应该在不创建对象的情况下调用它们的方法.因为字符串类型的行为就像它们是对象一样.那为什么不呢?
编辑2:我认为这是唯一的核心功能,不能new Date()
像其他功能(Array(), String(), Error()
等)一样.所以,它也是这种语言或ECMAScript错误的隐藏功能.
根据ECMAScript规范(Javascript所基于的):
当Date作为函数而不是构造函数调用时,它返回表示当前时间(UTC)的String.
注意函数调用Date(...)不等同于具有相同参数的对象创建表达式new Date(...).
参考文献:http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.2
你需要,new
因为你正在创建一个新Date
对象.简单地调用Date(),意味着调用一个将Date()作为字符串返回的函数.
请参阅:http://www.javascripture.com/Date
Date() : String
Returns a string representation of the current date and time.
Run Code Online (Sandbox Code Playgroud)
对于其他类型(如Array或Error),函数是工厂函数,用于创建新对象并返回它们.
看到:
http://www.javascripture.com/Array
错误(消息:字符串):错误使用描述错误的指定消息创建新错误.
new Error(message:String):错误与错误相同(消息)
归档时间: |
|
查看次数: |
1741 次 |
最近记录: |