简述JavaScript什么是构造函数?它与普通函数有什么区别?
参考答案:
在JavaScript中,构造函数是一种特殊的函数,它主要用于初始化一个新创建的对象。通常,我们在创建对象时使用new
关键字来调用构造函数。构造函数的名字通常以大写字母开头,但这并不是强制性的,只是一种常见的命名约定。
当使用new
关键字调用构造函数时,JavaScript会执行以下步骤:
- 创建一个新的空对象。
- 将这个新对象的内部链接(
[[Prototype]]
)设置为构造函数的prototype
对象。 - 将构造函数的作用域赋给新对象(也就是说,
this
指向新对象)。 - 如果函数没有返回其他对象,那么
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
就是一个构造函数,它接受两个参数(name
和age
),并将这两个参数的值分别赋给新对象的name
和age
属性。
普通函数和构造函数的主要区别在于调用方式和使用方式。普通函数通常被直接调用,而不需要使用new
关键字。而且,普通函数通常用于执行一些操作,而不是用于创建和初始化对象。然而,JavaScript中的函数是多功能的,它们既可以作为构造函数使用,也可以作为普通函数使用。当函数被作为构造函数使用时,this
关键字会指向新创建的对象,而当函数被作为普通函数使用时,this
通常指向全局对象(在浏览器中是window
对象)或者undefined
(在严格模式下)。