一、直接创建方式:
例子:
var student = new Object();
student.name="Kate";
student.doSprot= function(name){
console.log(name+"正在跑步。。。")
}
//调用
console.log(student.name);
student.doSprot("小红");
console.log(student.name);
输出结果:
Kate
小红正在跑步。。。
语法:
var 对象变量名 = new Object();
对象变量名. property1 = value1;
…;
对象变量名. propertyN = valueN;
对象变量名. methodName1 = function([参数列表]){
//函数体
}
…;
对象变量名. methodNameN = function([参数列表]){
//函数体
}
二、对象初始化式:
例子:
var student = {
name:"小明",
eat : function(){
console.log(this.name+"正在吃东西。。。")
},
run:function(name){
//name = "小兰";
console.log(this.name+"正在跑步。。。")
console.log(name+"正在跑步。。。")
},
}
//调用
student.eat();
student.run("小小");
//执行该行时,加上 name = "小兰";
student.run();
输出结果:
小明正在吃东西。。。
小明正在跑步。。。
小小正在跑步。。。。
小明正在跑步。。。
小兰正在跑步。。。
语法:
var 对象变量名 = {
property1 : value1,
property2 : value2,
…,
propertyN : valueN,
methodName1 : function([parameter_list]){
//函数体
},
…,
methodNameN : function([parameter_list]){
//函数体
}
}
三、构造方法式:
例子:
function Student(name){
this.name = name;
this.sleep = function(){
console.log(name+"正在睡觉。。。")
};
}
//创建对象
var stu = new Student("Lily");
//调用
console.log(stu.name);
stu.sleep();
输出结果:
Lily
Lily正在睡觉。。。
语法:
//第一种
function 构造函数([参数列表]){
this.属性 = 属性值;
…
this.属性N = 属性值N;
this.函数1 = function([参数列表]){
//函数体
} ;
…
this.函数N = function([参数列表]){
//函数体
} ;
}
//第二种
function 构造函数([参数列表]){
this.属性 = 属性值;
…
this.属性N = 属性值N;
this.函数1 = method1;
…
this.函数N = methodN;
}
function method1([参数列表]){
//函数体
}
…
function methodN([参数列表]){
//函数体
}
注意:
- 采用构造函数方式创建对象,则this不能省略,这是也普通函数的区别;
- 采用构造函数方式创建对象,左边的方式更可取,提高了代码的复用;
四、proptotype原型式:
例子:
function Student(){}
Student.prototype.name = "Kitty";
Student.prototype.read = function(name){
console.log(this.name+"正在看书。。。");
console.log(name+"正在看书。。。");
};
var student = new Student();
student.read();
student.read("姐姐");
输出结果:
Kitty正在看书。。。
undefined正在看书。。。
Kitty正在看书。。。
姐姐正在看书。。。
语法:
function 对象构造器( ){
}
对象构造器.prototype.属性名=属性值;
对象构造器.prototype.函数名 = function([参数列表]){
//函数体
}
注意:
在声明一个新的函数后,该函数(在JavaScript中,函数也是对象)就会拥有一个prototype的属性,通过该属性可以为对象添加新的属性和方法。
五、混合(构造方法和原型)式:
例子:
function Student(){
this.name = name;
}
Student.prototype.study = function(){
console.log(this.name+"正在看书。。。")
}
var student = new Student();
student.study();
student.name = "和二";
console.log(student.name);
student.study();
输出结果:
正在看书。。。
和二
和二正在看书。。。
语法:
function 对象构造器([参数列表]){
}
对象构造器.prototype.函数名 = function([参数列表]){
//函数体
}
补充:
构造函数方式便于动态为属性赋值,但是这种方式将方法也定义在了构造方法体中,使得代码比较杂乱;而原型方式不便于为属性动态赋值,但是这种方式定义的属性和方法实现了分离;所以取长补短——构造函数定义属性,原型方式定义方法。