为构造函数模拟 apply() (JavaScript)
Simulating an apply() for constructors (JavaScript)
我是 JavaScript 的新手,目前正在阅读 Rausch 的书 "Speaking JavaScript",我在 "Simulating apply() for constructors" 部分看到了以下符号:
new (Date.bind(null, 2011, 11, 24))
现在这让我感到很困惑。有人可以详细解释这个声明吗?特别是,我无法理解 'new' 关键字后面的括号的含义,另外,就我而言, 'bind' 是一种只能应用于函数的方法,不是吗?提前致谢。
Date.bind(null, 2011, 11, 24)
returns 一个使用这三个数字参数调用全局 Date
函数的函数(2011 年平安夜)。 new
运算符可以应用于任何函数,因此在本例中它被应用于那个函数。考虑这个重写:
var ChristmasEve2011 = Date.bind(null, 2011, 11, 24);
var d = new ChristmasEve2011();
括号是必需的,因为 new
的运算符优先级。如果没有括号,解析器会将其解释为通过 Date.bind
函数的 new
的调用。 使用 括号,bind
调用首先发生 ,然后是对返回函数的 new
调用。
请注意,由于 .bind()
创建的函数的性质,使用 new
运算符没有多大意义。当Date
构造函数真正被调用时,this
的值将是null
.
'.bind' returns 一个新函数,其值绑定到传递给该函数的第一个参数。
在这种情况下,'this' 的值将是 'null'。
所以它只是 returns Date 构造函数,没有任何特别之处。
类似于:
new Date(2011, 11, 24)
在第 3 点检查此 site。它将详细介绍它。
我是 JavaScript 的新手,目前正在阅读 Rausch 的书 "Speaking JavaScript",我在 "Simulating apply() for constructors" 部分看到了以下符号:
new (Date.bind(null, 2011, 11, 24))
现在这让我感到很困惑。有人可以详细解释这个声明吗?特别是,我无法理解 'new' 关键字后面的括号的含义,另外,就我而言, 'bind' 是一种只能应用于函数的方法,不是吗?提前致谢。
Date.bind(null, 2011, 11, 24)
returns 一个使用这三个数字参数调用全局 Date
函数的函数(2011 年平安夜)。 new
运算符可以应用于任何函数,因此在本例中它被应用于那个函数。考虑这个重写:
var ChristmasEve2011 = Date.bind(null, 2011, 11, 24);
var d = new ChristmasEve2011();
括号是必需的,因为 new
的运算符优先级。如果没有括号,解析器会将其解释为通过 Date.bind
函数的 new
的调用。 使用 括号,bind
调用首先发生 ,然后是对返回函数的 new
调用。
请注意,由于 .bind()
创建的函数的性质,使用 new
运算符没有多大意义。当Date
构造函数真正被调用时,this
的值将是null
.
'.bind' returns 一个新函数,其值绑定到传递给该函数的第一个参数。 在这种情况下,'this' 的值将是 'null'。 所以它只是 returns Date 构造函数,没有任何特别之处。
类似于:
new Date(2011, 11, 24)
在第 3 点检查此 site。它将详细介绍它。