我是JavaScript新手,目前我正在阅读Rausch的书“Speaking JavaScript”,我在“Simulating apply()for constructors”部分中注意到了以下表示法:
new (Date.bind(null, 2011, 11, 24))
现在这对我来说似乎很混乱。有人可以详细解释这个陈述吗?特别是,我无法得到'new'关键字之后的括号的含义,另外,就我而言,'bind'是一种只能应用于函数的方法,不是吗?提前谢谢。
答案 0 :(得分:0)
Date.bind(null, 2011, 11, 24)
返回一个函数,该函数使用这三个数字参数调用全局Date
函数(Christmas eve 2011)。 new
运算符可以应用于任何函数,因此在这种情况下,它应用于该函数。考虑一下这个重写:
var ChristmasEve2011 = Date.bind(null, 2011, 11, 24);
var d = new ChristmasEve2011();
由于new
的运算符优先级,括号是必需的。如果没有括号,解析器会将其解释为new
函数Date.bind
的调用。 使用括号,bind
调用首先发生 ,然后调用返回的函数{/ 1}}。
请注意,由于new
创建的函数的性质,使用.bind()
运算符并没有多大意义。实际调用new
构造函数时,Date
的值将为this
。
答案 1 :(得分:0)
'。bind'返回一个新函数,该值绑定到传递给函数的第一个参数。 在这种情况下,'this'的值将为'null'。 所以它只返回Date构造函数而没有任何特殊的东西。
它类似于:
new Date(2011, 11, 24)
答案 2 :(得分:0)
在第3点检查site。它将详细介绍它。