跳到主要内容

简述JavaScript什么是构造函数?它与普通函数有什么区别?

参考答案:

在JavaScript中,构造函数是一种特殊的函数,它主要用于初始化一个新创建的对象。通常,我们在创建对象时使用new关键字来调用构造函数。构造函数的名字通常以大写字母开头,但这并不是强制性的,只是一种常见的命名约定。

当使用new关键字调用构造函数时,JavaScript会执行以下步骤:

  1. 创建一个新的空对象。
  2. 将这个新对象的内部链接([[Prototype]])设置为构造函数的prototype对象。
  3. 将构造函数的作用域赋给新对象(也就是说,this指向新对象)。
  4. 如果函数没有返回其他对象,那么new表达式中的函数调用会自动返回这个新对象。

例如:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

var john = new Person('John', 30);
console.log(john.name);  // 输出 "John"
console.log(john.age);   // 输出 30

在这个例子中,Person就是一个构造函数,它接受两个参数(nameage),并将这两个参数的值分别赋给新对象的nameage属性。

普通函数和构造函数的主要区别在于调用方式和使用方式。普通函数通常被直接调用,而不需要使用new关键字。而且,普通函数通常用于执行一些操作,而不是用于创建和初始化对象。然而,JavaScript中的函数是多功能的,它们既可以作为构造函数使用,也可以作为普通函数使用。当函数被作为构造函数使用时,this关键字会指向新创建的对象,而当函数被作为普通函数使用时,this通常指向全局对象(在浏览器中是window对象)或者undefined(在严格模式下)。