构造函数是一种特殊的函数,用于创建和初始化对象。在JavaScript中,我们可以使用函数或类作为构造函数来创建新的对象。在使用构造函数时,有时会看到在构造函数名称后加上括号,也有时不加,这究竟有什么差别呢?下面我们来详细讲解。
构造函数加括号与不加括号的区别
构造函数加括号的用法
当构造函数名称后面加上括号时,相当于在使用该构造函数来创建新的对象。例如:
function Person(name, age) {
this.name = name;
this.age = age;
}
var person1 = new Person("Tom", 18); // 使用构造函数Person创建新的对象
上面的代码中,我们使用了构造函数Person
来创建一个新的Person
对象person1
。在使用构造函数时,必须使用new
关键字将构造函数名称和参数封装在括号内来创建新的对象。
构造函数不加括号的用法
当构造函数名称后面不加括号时,相当于在引用该构造函数本身而不是使用它来创建新的对象。例如:
function Person(name, age) {
this.name = name;
this.age = age;
}
var p = Person; // 引用构造函数Person本身
上面的代码中,我们将构造函数Person
赋值给变量p
。此时,变量p
保存的是构造函数本身,而不是一个新的对象。
示例说明
示例1:构造函数加括号的使用
function Car(brand, model, year) {
this.brand = brand;
this.model = model;
this.year = year;
}
var car1 = new Car("Toyota", "Camry", 2020);
console.log(car1); // 输出:Car {brand: "Toyota", model: "Camry", year: 2020}
在上面的示例中,我们使用了构造函数Car
来创建了一个新的Car
对象car1
,并将品牌、车型和年份属性赋值给了这个对象。使用构造函数创建对象时,必须在构造函数名称后面加上括号,并把参数传递给构造函数。
示例2:构造函数不加括号的使用
function Rectangle(width, height) {
this.width = width;
this.height = height;
this.area = function() {
return this.width * this.height;
};
}
var rect = Rectangle;
console.log(rect); // 输出:function Rectangle(width, height) { this.width = width; this.height = height; this.area = function() { return this.width * this.height; }; }
在上面的示例中,我们将构造函数Rectangle
赋值给变量rect
,再将这个变量打印出来。由于我们并没有在构造函数名称后面加上括号,因此在变量rect
中保存的是构造函数本身,而不是新的对象。如果希望使用这个构造函数创建新的对象,必须在构造函数名称后面加上括号。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详谈构造函数加括号与不加括号的区别 - Python技术站