function
类型对象可以通过
撰写函数声明(function myFunction() {}
)
函数表达式(x = function(){}
)
像python
这样的语言也支持作为第一类对象。
通过上述两种方法创建的对象具有隐式成员[[Prototype]]
,该成员继承了存储为Function.prototype
的公共属性和方法,如下所示
但Javascript引入了另一种名为 Function constructor (myFunction = new Function("")
)的方法。
有人认为,引入Function
构造函数来接受代码作为数据(字符串)。但是函数在javascript中是第一类的。
所以,
为什么在Javascript中引入了Function:function Function(){...}
?它的意义是什么?引入的主要是Function.prototype
指向的共同属性和方法吗?以便所有function
类型对象都继承这些属性和方法成员?
答案 0 :(得分:0)
为什么在JavaScript中引入了
new Function()
?
你必须问语言设计师。
此表格应被视为历史文物。除非在最神秘的情况下,否则没有必要或建议。
答案 1 :(得分:0)
来自Prototypal Inheritance in JavaScript:
JavaScript本身与其原型性质相矛盾。在原型系统中,对象从对象继承。但是,JavaScript缺少执行该操作的运算符。相反,它有一个新的运算符,例如
new f()
生成一个继承自
的新对象f.prototype
这种间接性旨在使经典训练的程序员对语言更加熟悉,但未能做到这一点。
JavaScript的构造函数模式并没有吸引经典人群。它还掩盖了JavaScript真正的原型性质。
相比之下,典型的原型inheritance(Io语言)。