为什么在Javascript中引入了Function构造函数?

时间:2015-08-22 00:32:43

标签: javascript

function类型对象可以通过

创建
  • 撰写函数声明function myFunction() {}

  • 函数表达式x = function(){}

python这样的语言也支持作为第一类对象。

通过上述两种方法创建的对象具有隐式成员[[Prototype]],该成员继承了存储为Function.prototype的公共属性和方法,如下所示

enter image description here

但Javascript引入了另一种名为 Function constructor myFunction = new Function(""))的方法。

有人认为,引入Function构造函数来接受代码作为数据(字符串)。但是函数在javascript中是第一类的。

所以, 为什么在Javascript中引入了Function:function Function(){...}?它的意义是什么?引入的主要是Function.prototype指向的共同属性和方法吗?以便所有function类型对象都继承这些属性和方法成员?

2 个答案:

答案 0 :(得分:0)

  

为什么在JavaScript中引入了new Function()

你必须问语言设计师。

此表格应被视为历史文物。除非在最神秘的情况下,否则没有必要或建议。

答案 1 :(得分:0)

来自Prototypal Inheritance in JavaScript

JavaScript本身与其原型性质相矛盾。在原型系统中,对象从对象继承。但是,JavaScript缺少执行该操作的运算符。相反,它有一个新的运算符,例如

new f()

生成一个继承自

的新对象
f.prototype

这种间接性旨在使经典训练的程序员对语言更加熟悉,但未能做到这一点。

JavaScript的构造函数模式并没有吸引经典人群。它还掩盖了JavaScript真正的原型性质。

相比之下,典型的原型inheritance(Io语言)。