什么是构造函数?什么样的函数对象可以被称为构造函数?

时间:2017-08-21 14:58:03

标签: javascript

我正在学习javascript而且我对这个定义感到困惑。 我在ECMA中查找并将构造函数定义为

  

创建和初始化obejects的函数对象。

那么,任何函数对象都可以被称为构造函数吗?

2 个答案:

答案 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};
}

你是否认为这些函数构造函数可能是主观的。