四种创建对标题象的方式:
1.系统的构造函数(Object)——缺点:麻烦
var obj = new Object();
obj.uname = "zs";
obj.age = 20;
obj.sayHi = function() {
console.log("hello");
}
2.对象字面量——缺点:不能批量创建对象,只能创建一个
var obj = {
uname: "zs",
age: 22
}
3.工厂函数——可以批量创建对象,但是无法识别类型
// 工厂函数创建对象,是一个函数,函数要有对应的参数,需要return返回所创建的对象
function person(uname, age) {
// 这里面可以用系统构造函数或者字面量创建对象
// var obj = new Object();
// obj.uname = uname;
// obj.age = age;
var obj = {
uname: uname,
age: age
}
return obj
}
//调用工厂函数需要传参
console.log(person("zs", 20));
4.自定义构造函数
function Person(uname, age) {
this.uname = uname
this.age = age
}
//构造函数是需要new的
var obj = new Person("zs", 22)
console.log(obj);
console.log(obj.uname, obj.age);
构造函数:
1.函数名首字母大写(规范,潜规则)
2.必须要和new一起使用
全部代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>创建对象</title>
</head>
<body>
<script>
// 系统构造函数创建对象
/* var obj = new Object();
obj.uname = "zs";
obj.age = 20;
obj.sayHi = function() {
console.log("hello");
} */
// 字面量创建对象
/* var obj = {
uname: "zs",
age: 22
}
console.log(obj);
console.log(obj.uname, obj.age); */
// 工厂函数创建对象,是一个函数,函数要有对应的参数,需要return返回所创建的对象
function person(uname, age) {
// 这里面可以用系统构造函数或者字面量创建对象
// var obj = new Object();
// obj.uname = uname;
// obj.age = age;
var obj = {
uname: uname,
age: age
}
return obj
}
console.log(person("zs", 20));
// 自定义构造函数创建对象,构造函数一定要用new
/* function Person(uname, age) {
this.uname = uname
this.age = age
}
//new所做的四件事情:
/* 1.创建一个空对象
2.将this指向创建的空对象
3.执行构造函数内的代码
4.把新创建的对象给返回出去 */
// 若是没有new,则返回一个undefined
var obj = new Person("zs", 22)
console.log(obj);
console.log(obj.uname, obj.age); */
</script>
</body>
</html>