我正在学习javascript而且我对这个定义感到困惑。 我在ECMA中查找并将构造函数定义为
创建和初始化obejects的函数对象。
那么,任何函数对象都可以被称为构造函数吗?
答案 0 :(得分:1)
在js中,如果要使用 new 运算符调用其目标,则调用函数构造函数是常见的:
var me = new Human;//Human is a constructor
但是,人类语言并没有严格定义,因此您可以随时使用它,您只需要为您的使用提供良好的参数。一个好的可论证的案例:
function Animal(name){//actually rather a factory function
return {name};
}
var cat = new Animal("bob");//and now ? :/
答案 1 :(得分:0)
那么,任何函数对象都可以被称为构造函数吗?
但并非每个函数都创建或初始化对象。考虑这个例子:
function add(a, b) {
return a + b;
}
此功能仅添加两个值。
什么是构造函数?什么样的函数对象可以被称为构造函数?
我认为只有那些打算用new
调用的函数才应被视为“构造函数”(包括通过class
创建的函数)。
但是,您也可以在不使用new
调用函数的情况下创建对象:
function getPerson(name) {
return {name: name};
}
你是否认为这些函数构造函数可能是主观的。