我现在已经研究过Javascript for litte但是如果一个语句是一个函数或构造函数,我似乎无法发现差异。这是构造函数的代码:
function Book (pages, author) {
this.pages = pages;
this.author = author;
}
这是一个简单的功能:
var cars = function(printCar){
console.log(blabla);
};
但是我在几个教程(即CodeCademy)中看到他们使用构造函数语法来创建函数。这怎么可能?
答案 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隐式返回创建的实例。
区分它们的约定是构造函数具有大写名称。