4

我碰巧注意到 Javascript 也支持Function关键字,就像在 ActionScript 中一样。由于两者都是从 ECMA Script 派生的,因此存在这种相似性是众所周知的。但我很好奇Function在 Javascript 的情况下代表什么,如果不是 Class(如 as3 中)。

在 JS 中,

var func = new Function(); 或者 var func = new Function;

将一个名为 'anonymous' 的函数分配给变量 'func'。

它可能只是一种以面向对象的方式实现实际“功能”的方法..

由于大多数浏览器(ff,ie&chrome)似乎以相同的方式实现它,它是否在规范中得到解决?

4

3 回答 3

6

Function是所有功能扩展的“类”。所有函数都是真正的Function对象。

(function(){}) instanceof Function === true

您还可以使用new Function从字符串(如eval)创建函数。

var func = new Function('x,y', 'return x+y;')
于 2013-02-25T14:26:29.540 回答
2

“JavaScript 中的每个函数实际上都是一个 Function 对象。” MDN 文档

function myFunc(a, b) {
  console.log( 'test' );
}

基本上等于

var myFunc = new Function('a', 'b', 'console.log( "test" )');

然而,两种声明函数的方式之间存在一些差异。阅读文档!

于 2013-02-25T14:28:04.593 回答
-1

1种方式:

var Person = function() {
    this.name;
    this.age;
}

var p1 = new Person();

第二种方式:

function Person() {
    this.name;
    this.age;
}

var p1 = new Person();
于 2013-02-25T14:27:54.563 回答