1、直接创建方式
<script>
//直接创建方式创建对象
var student = new Object();
student.name="tom";
student.dohomework=function(){
console.log(this.name+"正在做作业");
}
student.dohomework();
</script>
2、 对象初始化器方式
<script>
//对象初始化器方式定义对象
var student={
name:"tom",
dohomework:function(){
console.log(this.name+"正在做作业");
}
}
student.dohomework();
</script>
结果同方法1;
前两种方法无法一次创建多个同种对象,适用于只需创建一次的对象
3、构造函数方式
<script>
//构造函数方式定义对象
function Student(name){
this.name=name;
this.dohomework=function(){
console.log(this.name+"正在做作业");
}
}
var student = new Student("tom");
student.dohomework();
</script>
结果同方法1;
4、prototype原型方式
<script>
//prototype原型方法定义对象
function Student(){
}
Student.prototype.name="tom";
Student.prototype.dohomework=function(){
console.log(this.name+"正在做作业");
}
var student = new Student();
student.dohomework();
</script>
结果同方法1;
构造函数方式便于动态为属性赋值,但是这种方式将方法也定义在了构造方法体中,使得代码比较杂乱;而原型方式不便于为属性动态赋值,但是这种方式定义的属性和方法实现了分离;所以取长补短——构造函数定义属性,原型方式定义方法
5、 混合的构造函数/原型方式
<script>
//混合式(构造方法式和原型方法相结合)定义对象
function Student(name){
this.name=name;
}
Student.prototype.dohomework=function(){
console.log(this.name+"正在做作业");
}
var student = new Student("tom");
student.dohomework();
</script>
结果同方法1;