直接创建式
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
var student=new Object();
student.name="Tom";
student.doHomeWork=function(){
console.log(this.name+"正在做作业");
}
student.doHomeWork();
</script>
</body>
</html>
直接创建一个对象,并对对象进行赋值,适用于仅创建一个对象;
初始化式
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
var student={
name:"Tom",
doHomeWork:function(){
console.log(this.name+"正在做作业");
}
}
student.doHomeWork();
</script>
</body>
</html>
直接创建对象并进行初始化属性和方法,适用于创建一个对象;
构造方法式
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
function Student(name){
this.name=name;
this.doHomework=function(){
console.log(this.name+"正在做作业");
}
}
var stu=new Student("Tom");
stu.doHomework();
</script>
</body>
</html>
构造方法式创建对象,适用于创建多个对象,但通过同一个方法(Student(name))创建的对象具有相同的方法,这里由Student(name)方法创建的对象都有相同的doHomework方法;
prototype原型式
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
function Student(){
}
Student.prototype.name="Tom";
Student.prototype.doHomework=function(){
console.log(this.name+"正在做作业");
}
var stu=new Student();
stu.doHomework();
</script>
</body>
</html>
通过这种定义方法定义的对象都具有相同的属性和方法;这里通过该Student()方法定义的对象都具有相同的属性(name)和方法(doHonework());
混合型
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
function Student(name){
this.name=name;
}
Student.prototype.doHomework=function(){
console.log(this.name+"正在做作业");
}
var stu=new Student("Tom");
stu.doHomework();
</script>
</body>
</html>
将构造方法式和prototype原型式混合使用,构造方法式方法和属性同时存在显得杂乱无章,这里将属性使用构造方法式定义,将方法使用prototype原型式定义,在保持了创建对象的灵活性的同时,又解决了创建多个对象的冗余问题。