当我们用JavaScript定义一个对象时,常见的方式是使用对象字面量(Object Literal)的方式。但是,JavaScript还提供了另一种方式——构造函数(Constructor)来定义对象。在这种方式下,我们可以通过自定义构造函数来构建属于自己的对象。下面是详细的攻略。
构造函数
什么是构造函数
构造函数是用来创建对象的函数,它包含了对象的属性和方法。在JavaScript中,每个函数都可以作为构造函数来使用。我们通常用new关键字来调用构造函数来创建一个新的对象。
构造函数定义对象的方式
通过构造函数来定义一个对象,我们需要先定义一个构造函数,再通过该构造函数来创建对象。
构造函数定义对象的方式如下:
function Person(name,age){
this.name = name;
this.age = age;
}
上面的代码定义了一个名为Person的构造函数,该函数有两个参数name和age,this指向当前创建的对象。如果我们要使用该构造函数来创建一个对象,可以使用new关键字,如下所示:
var personA = new Person('Tom',18);
var personB = new Person('Jerry',16);
上述代码创建了两个对象:personA和personB。它们都是使用构造函数Person创建的,每个对象都拥有自己的name和age属性值。
构造函数创建的对象有什么特点
使用构造函数创建的对象有以下特点:
- 它们都有一个构造函数,该构造函数可以是通过一个函数字面量定义的,也可以是通过一个已经存在的构造函数生成的实例来指定的。
- 它们都是对象,所以都有一个原型链,该原型链指向Object.prototype。
- 它们都有一个对象类型(object type),该类型用许多不同的方法来定义。
构造函数继承
构造函数也可以被用来实现继承。 对象(子类)可以从其父对象(父类)继承其构造函数,并通过原型链来继承其方法和属性。
继承的示例如下:
function Animal(type){
this.type = type;
}
function Cat(name,age,type){
this.name = name;
this.age = age;
Animal.call(this,type);
}
Cat.prototype = new Animal();
上面的代码定义了两个构造函数:Animal和Cat。Cat继承了Animal,Cat的实例可以拥有Animal的属性。
构造函数示例
下面是一个完整的构造函数示例,该示例创建了两个对象:电影和音乐。
function Movie(title,director,year){
this.title = title;
this.director = director;
this.year = year;
}
function Music(title,singer,year){
this.title = title;
this.singer = singer;
this.year = year;
}
var movieA = new Movie('The Shawshank Redemption','Frank Darabont','1994');
var musicA = new Music('Billie Jean','Michael Jackson','1983');
console.log(movieA);//{title: "The Shawshank Redemption", director: "Frank Darabont", year: "1994"}
console.log(musicA);//{title: "Billie Jean", singer: "Michael Jackson", year: "1983"}
上述代码运行后,输出了两个对象movieA和musicA。它们都是使用构造函数创建的,且拥有自己的属性值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript 构造函数方式定义对象 - Python技术站