Javascript 使用function定义构造函数
在Javascript中,我们可以使用function
来定义一个构造函数,从而创建对象实例。这种方式被称为使用构造函数模式。
定义构造函数
定义一个构造函数很简单,只需要使用function
关键字,紧接着是函数名和括号,然后在函数体内部定义对象的属性和方法即可。
function Person(name, age) {
this.name = name;
this.age = age;
this.sayHello = function() {
console.log(`My name is ${this.name}, I'm ${this.age} years old`);
}
}
在上面的例子中,我们定义了一个名为Person
的构造函数,它有两个参数,分别是name
和age
。我们通过this
关键字将name
和age
绑定到作为构造函数所创建的实例对象上,然后定义了一个sayHello
方法用于打印对象实例的信息。
创建实例对象
我们使用构造函数创建实例对象时,需要使用new
关键字来调用构造函数。这样会创建一个空的对象实例,并将this
指向这个空对象。
下面是创建实例对象的示例:
const person1 = new Person('Tom', 18);
const person2 = new Person('Lucy', 25);
person1.sayHello(); // My name is Tom, I'm 18 years old
person2.sayHello(); // My name is Lucy, I'm 25 years old
在上面的示例中,我们分别创建了两个实例对象person1
和person2
,它们都是通过Person
构造函数创建的。我们可以通过调用实例对象的sayHello
方法,来确认它们都成功地创建了。
使用原型来共享属性和方法
在Javascript中,每个实例对象都有自己的属性和方法。这样可能会造成一些不必要的内存浪费。要避免这些问题,我们可以使用原型来共享属性和方法。
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
console.log(`My name is ${this.name}, I'm ${this.age} years old`);
};
在上面的示例中,我们使用prototype
来向Person
构造函数添加方法。这样我们就可以将所有的实例对象都共享这些方法了,避免了重复定义、内存浪费等问题。
示例1:定义Animal构造函数
function Animal(species) {
this.species = species;
}
Animal.prototype.saySpecies = function() {
console.log(`This animal is ${this.species}`);
};
const cat = new Animal('Cat');
const dog = new Animal('Dog');
cat.saySpecies(); // This animal is Cat
dog.saySpecies(); // This animal is Dog
在上面的示例中,我们定义了一个名为Animal
的构造函数,它有一个参数,即species
。我们使用this
关键字将species
绑定到作为构造函数所创建的实例对象上,并通过prototype
共享了一个saySpecies
方法。
最后,我们创建了两个实例对象cat
和dog
,并通过调用它们的saySpecies
方法来确认它们都成功创建了。
示例2:定义Car构造函数
function Car(name, color) {
this.name = name;
this.color = color;
}
Car.prototype.beep = function() {
console.log(`The ${this.color} ${this.name} is beeping!`);
};
const car1 = new Car('BMW', 'Black');
const car2 = new Car('Toyota', 'Red');
car1.beep(); // The Black BMW is beeping!
car2.beep(); // The Red Toyota is beeping!
在上面的示例中,我们定义了一个名为Car
的构造函数,它有两个参数,即name
和color
。我们使用this
关键字将name
和color
绑定到作为构造函数所创建的实例对象上,并通过prototype
共享了一个beep
方法。
最后,我们创建了两个实例对象car1
和car2
,并通过调用它们的beep
方法来确认它们都成功创建了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript 使用function定义构造函数 - Python技术站