函数和构造函数语法之间的Javascript区别?

时间:2014-09-09 17:03:06

标签: javascript function constructor

我现在已经研究过Javascript for litte但是如果一个语句是一个函数或构造函数,我似乎无法发现差异。这是构造函数的代码:

function Book (pages, author) {
this.pages = pages;
this.author = author;
}

这是一个简单的功能:

var cars = function(printCar){
console.log(blabla);
};

但是我在几个教程(即CodeCademy)中看到他们使用构造函数语法来创建函数。这怎么可能?

1 个答案:

答案 0 :(得分:3)

没有语法差异。所有(用户定义的)函数都可以作为函数/方法或构造函数来调用。它是否function declaration or a expression并不重要:

var Book = function() { … };
function Book() { … }
var example = function() { … };
function example() { … };

但是,始终鼓励使用naming functions,并且当您可以使用声明时,没有理由编写var example = function() { … }。在某些情况下,需要表达式(通常是匿名的)或declarations are invalid

它们是什么以及它们的作用完全取决于它们的身体代码。构造函数通常在this上设置属性,但方法也会这样做。构造函数通常没有return语句,因为new operator隐式返回创建的实例。

区分它们的约定是构造函数具有大写名称。