Skip to content
登录后刷题更便捷

下列语句有什么区别:`function Person(){}`、`var person = Person()`和`var person = new Person()`?

难度:

这个问题问得很含糊。我猜这是在考察 JavaScript 中的构造函数(constructor)。从技术上讲,function Person(){}只是一个普通的函数声明。使用 PascalCase 方式命名函数作为构造函数,是一个惯例。

var person = Person()Person以普通函数调用,而不是构造函数。如果该函数是用作构造函数的,那么这种调用方式是一种常见错误。通常情况下,构造函数不会返回任何东西,因此,像普通函数一样调用构造函数,只会返回undefined赋给用作实例的变量。

var person = new Person()使用new操作符,创建Person对象的实例,该实例继承自Person.prototype。另外一种方式是使用Object.create,例如:Object.create(Person.prototype)

js
function Person(name) {
  this.name = name;
}

var person = Person("John");
console.log(person); // undefined
console.log(person.name); // Uncaught TypeError: Cannot read property 'name' of undefined

var person = new Person("John");
console.log(person); // Person { name: "John" }
console.log(person.name); // "john"
参考

内容仅供参考,难免有不恰当的地方,如果有问题欢迎及时反馈
部分内容来自网络,如果不慎侵犯您的权益,请联系我们,以便及时删除侵权内容