在这个问题中,我不想问“功能”,我想问“功能”难题
<script type="text/javascript">
var test = function() {
alert('a');
};
var test1 = new function() {
alert('b');
};
</script>
为什么会弹出“b”?
在这个问题中,我不想问“功能”,我想问“功能”难题
<script type="text/javascript">
var test = function() {
alert('a');
};
var test1 = new function() {
alert('b');
};
</script>
为什么会弹出“b”?
函数 (p1, p2, ... , pn, body)
当使用一些参数 p1、p2、...、pn、body 调用 Function 函数时(其中 n 可能为 0,即没有“p”参数,并且也可能不提供 body),以下步骤是采取:
创建并返回一个新的 Function 对象,就像在具有相同参数的新表达式中使用标准内置构造函数 Function 一样。
new
用于 Javascript 中的工厂模式。它通过执行构造函数创建并返回一个对象。在您的情况下,使用new
.
如果您不传递任何参数,则构建用作构造函数的函数不需要括号:
var Person = function () { this.is_alive = true; },
bob = new Person;
bob.is_alive;
...但是任何函数都可以作为构造函数调用,无论您是否使用返回的对象...
new function () { console.log("Bob"); }
这不会将函数保存在任何地方——它会立即就地运行它。
new function
将执行该函数,您也可以使用 IIFE(立即调用函数表达式):
var test1 = (function() {
alert('b');
}());
请参阅JavaScript 中的“新”关键字是什么?有关新关键字的基本描述。
本质上,您将构造函数调用到一个新对象。我来给你展示。
var Animal = function(name) {
alert("Animal Created: " + name);
}
jaguar = new Animal("Cool");
与您所做的唯一区别是在定义新对象的同一行中声明函数:
jaguar = new function(name) {
alert("Animal Created: " + name);
}
这就是为什么“b”被打印出来的原因。