字面量创建对象:
<script>
var obj = {
name: "小不言",
age: 18,
sayHi: function(){
console.log("好靓仔");
}
}
</script>
内置构造函数创建对象:
<script>
var obj = new Object();
obj.name = "小不言";
obj.age = 18;
obj.sayHi = function () {
console.log("很帅啊");
}
</script>
工厂函数创建对象:
<script>
// 创建工厂函数
function createObj(name,age) {
// 手动创建一个对象
var obj = {};
// 手动向里边添加属性
obj.name = name;
obj.age = age;
obj.sayHi = function(){
console.log("好靓仔啊");
}
// 手动返回这个对象
return obj;
}
// 使用工厂函数去创建对象
var obj1 = createObj("小不言",20);
var obj2 = createObj("大孩儿",18);
console.log(obj1,obj2);
</script>
自定义构造函数创建对象:
<script>
// 制造一个自定义构造函数
// 构造函数会自动创建对象,自动返回这个对象
// 我们只需要手动向里面添加内容就可以了
function createObj(name,age) {
// 自动创建对象
// 手动向对象里面添加成员
// 这里的 this 指向当前实力(new 前面的变量)
this.name = name;
this.age = age;
this.sayHi = function(){
console.log("靓仔啊");
}
// 自动返回对象
}
// 使用自定义构造函数去创建对象
// 构造函数在使用的时候,需要和 new 关键字连用
// 如果不连用,那么没有意义
// 第一次调用 createObj 时,和new 关键字连用了,那么this指向的就是obj1
// 函数内部在执行是,就是在向obj1添加了name age sayHi 三个成员
var obj1 = new createObj("小不言",18);
// 第二次调用 createObj 时,和new 关键字连用了,那么this指向的就是obj2
// 函数内部在执行是,就是在向obj2添加了name age sayHi 三个成员
var obj2 = new createObj("大孩儿",20);
</script>