1、字面量创建对象
写法简洁,代码结构清晰,但每创建一个对象都需要重复绑定属性和方法。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var obj1={
//绑定属性
name : "绑定属性",
//绑定方法
fun1:function(){
console.log("绑定方法");
}
}
//输出属性值,输出结果
console.log(obj1.name);
//调用对象中的方法,输出结果
obj1.fun1();
</script>
</body>
</html>
2、new Object 创建对象
每创建一个对象都需要重复绑定属性和方法,并且绑定步骤反锁。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var obj2 = new Object();
//绑定属性
obj2.name = "绑定属性";
//绑定方法
obj2.fun2 = function (){
console.log("绑定方法");
};
//输出属性值,输出结果
console.log(obj2.name);
//调用对象中的方法,输出结果
obj2.fun2();
/*new的功能:(重要)
开辟内存空间,存储新创建的对象(new Object)
把this设置为当前对象
执行内部代码,设置对象属性和方法
返回新创建的对象
*/
</script>
</body>
</html>
3、通过工厂函数批量创建对象
将创建对象过程封装函数,反复调用该函数创建对象。可以批量创建对象,提高代码复用性。
但是无论创建什么对象都是new Object(),对象类型不明确。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
function factory(name) {
var obj3 = new Object();
obj3.name = name;
obj3.fun3 = function (){
console.log("方法");
};
return obj3;
}
//调用工厂函数
var obj3 = factory("属性");
//输出属性值,输出结果
console.log(obj3.name);
//调用对象中的方法,输出结果
obj3.fun3();
</script>
</body>
</html>
4、构造函数创建对象
使用new调用构造函数,创建对象,不用手动返回对象。
构造函数于普通函数本质上没有区别,都是函数,函数只有一种,但普通函数需要使用return返回对象。
因为new会返回新创建的对象,普通函数调用方法需要有return才有返回值,如果没写默认返回undefined。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
function obj4(name){
this.name = name;
this.fun4 = function(){
console.log("方法");
}
}
var obj = new obj4("属性");//调用构造函数
console.log(obj.name);
obj.fun4();
/*new的功能:(重要)
开辟内存空间,存储新创建的对象(new Object)
把this设置为当前对象
执行内部代码,设置对象属性和方法
返回新创建的对象
*/
/*构造函数于普通函数本质上没有区别,都是函数,函数只有一种
写法:构造函数是大驼峰命名法,普通函数是小驼峰命名法
功能:构造函数使用this为当前对象绑定属性和方法,普通函数都是一段功能性代码,为了反复调用
*/
//定义普通函数
function demo1(){
console.log("普通方法demo1");
}
//定义构造函数
function demo2() {
this.name = "demo2属性";
this.demo2fun = function (){
console.log("构造函数demo2");
}
}
//使用构造方法调用普通函数
var de1 = new demo1();
console.log(de1);//输出结果 普通方法 demo1 demo{}
//new会把this设置为当前对象,执行内部代码,设置对象属性和方法,由于没有this,无法设置属性和方法
//会将内部代码执行,并返回一个空的对象
//使用普通函数调用方法调用构造函数
var de2 = demo2();
//输出结果 undefined
console.log(de2);
//因为new会返回新创建的对象,普通函数调用方法需要有return才有返回值,如果没写默认返回undefined
/*对象属性绑定的两种方式;
对象.属性名= 属性值;
*/
</script>
</body>
</html>