我正在研究JavaScript中的对象,并且在使用new
关键字()
创建对象时需要使用关键字和时感到困惑。
var a = new Date(); // current date and time
var b = Date(); // current date and time
var c = new Date; // current date and time
var d = Date; // => function Date() { [native code] }
前三种方法有什么区别?为什么不d
按预期做?
鉴于: new Date()
这是从构造函数1创建新对象的“标准”方法。它返回一个代表当前时间的新Date对象。
鉴于: Date()
当未作为构造函数调用时,JavaScript将Date函数定义为以这种方式运行(即,使用new
)。它返回的值与值不同(字符串而不是Date对象)new Date()
。请参见为什么不使用new运算符就无法调用Date()类的方法。
用户代码还可以检查this
构造函数内部的值,以确定是否new
使用了该代码,尽管这种操作很少发生。请参见如何检测一个函数是否被称为构造函数?
鉴于: new Date
使用new
括号时,如果没有参数,则是可选的。这只是大多数人不使用的另一种语法形式-等同于new Date()
表达式终止。请参见使用“ new”运算符创建对象时,我们可以省略括号吗?
鉴于: Date
这会在不调用表达式或创建新实例的情况下,将表达式计算为构造函数(仅是函数对象!2)。这就是为什么结果显示了“功能” -这是在构造函数。
1我使用术语构造函数,以强调该构造是点只有一个函数,(也)支撑new
; 从技术上讲,将其称为构造函数就足够了。
2同样,重要的是要了解JavaScript中的function [-objects]是一等公民,因此只看重自身。像任何物体一样。在最后一个示例中,对象/值的分配是在没有对对象本身执行任何操作(即函数调用)的情况下发生的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句