文章目录
一、直接创建方式
1.语法
var 对象变量名 = new Object();//直接通过new的方法创建一个对象
对象变量名. property1 = value1;//propertyN为对象中的变量名
…;//可随意定义多个变量
对象变量名. propertyN = valueN;
对象变量名. methodName1 = function([参数列表]){
//函数体
}
…;
对象变量名. methodNameN = function([参数列表]){
//函数体
}
2.实例
<script>
var student = new Object();
student.name = "Tom";//直接给对象中的元素赋值
student.doHomework = function(){//直接给对象中的方法写方法
console.log(this.name+"...doHomework....");//this指代的是调用doHomework方法的对象,调用该对象的名字
}
student.doHomework();//直接调用对象中的方法
</script>
二、对象初始化器方式
1.语法
var 对象变量名 = {//定义一个对象
property1 : value1,//对对象中的变量进行赋值(即初始化)
property2 : value2,
…,
propertyN : valueN,//变量和方法名和背后赋值部分用:间隔
methodName1 : function([parameter_list]){
//函数体
},
…, //不同变量和方法体之间用逗号间隔
methodNameN : function([parameter_list]){
//函数体
}
}
2.实例
<script>
var student = {
name : "Tom",//给变量赋值
doHomework : function(){
console.log(this.name + "...doHomework...");
}
};
student.doHomework();
</script>
三、构造函数方法
该方法创建对象能节省代码
1.语法
function 构造函数([参数列表]){
this.属性 = 属性值;
…
this.属性N = 属性值N;
this.函数1 = method1;
…
this.函数N = methodN;
}
function method1([参数列表]){
//函数体
}
…
function methodN([参数列表]){
//函数体
}
或(一般用下面这种,比较节省代码)
function 构造函数([参数列表]){
this.属性 = 属性值; //this不能省略
…
this.属性N = 属性值N;
this.函数1 = function([参数列表]){
//函数体
} ;
…
this.函数N = function([参数列表]){
//函数体
} ;
}
2.实例
<script>
function Student(name){//定义一个函数
this.name = name;
//this.name = "Tom";如果不传入name的值,可以直接赋值
this.doHomework = function(){
console.log(this.name+"...doHomework...");
}
}
var student = new Student("Tom");//创建一个对象,将name的值传入
student.doHomework();//调用对象中的方法
</script>
四、prototype原型方式
在声明一个新的函数后,该函数(在JavaScript中,函数也是对象)就会拥有一个prototype的属性,通过该属性可以为该函数(对象)添加新的属性和方法。
缺点:不便于为属性动态赋值
1.语法
function 对象构造器( ){
}
对象构造器.prototype.属性名=属性值;
对象构造器.prototype.函数名 = function([参数列表]){
//函数体
}
2.实例
<script>
function Student(){
//定义一个空的新的函数,即一个新的“对象”
}
Student.prototype.name="Tom";//原型式必须用prototype给变量即函数赋值
Student.prototype.doHomework = function(){
console.log(this.name+"...doHomework...");
}
var student = new Student();//创建对象
student.doHomework();//调用方法
</script>
五、混合的构造函数/原型方式
构造函数方式:便于动态为属性赋值,但是这种方式将方法也定义在了构造方法体中,使得代码比较杂乱
原型方式:不便于为属性动态赋值,但是这种方式定义的属性和方法实现了分离
所以取长补短——构造函数定义属性,原型方式定义方法。
1.语法
function 对象构造器([参数列表]){
}
对象构造器.prototype.函数名 = function([参数列表]){
//函数体
}
2.实例
<script>
function Student(name){
this.name = name;//定义一个新的函数,用函数式为变量赋值
}
Student.prototype.doHomework = function(){
console.log(this.name+"...doHomework...");//使用原型式丰富方法
}
var student = new Student("Tom");//创建对象,将变量值传入
student.doHomework();//调用方法
</script>
3.以上五种类型执行结果都为