创建对象方式:
字面量的方法:
var per1 = {
name: "卡卡西",
age: 20,
sex: "男",
eat: function () {
console.log("吃臭豆腐");
},
readBook: function () {
console.log("天堂");
}
};
调用系统的构造函数:
var per2 = new Object();
per2.name = "大蛇丸";
per2.age = 30;
per2.sex = "男";
per2.eat = function () {
console.log("吃榴莲");
};
per2.play = function () {
console.log("这个小蛇真好玩");
};
console.log(per2 instanceof Object);//输出true
自定义构造函数:
function Person(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
this.play = function () {
console.log("天天打游戏");
};
}
var per = new Person("雏田", 18, "女");
console.log(per instanceof Person);//输出true
第三种方法是最常用的,也是效果最高的一种方式,当这样创建对象的时候,需要做以下几种事
- 开辟空间存储对象
- 把this设置为当前的对象
- 设置属性和方法的值
- 把this对象返回
工厂模式创建对象
function createObject(name,age) {
var obj=new Object();
obj.name=name;
obj.age=age;
obj.sayHi=function () {
console.log("您好");
};
return obj;
}
var per2=createObject("小明",20);
工厂模式和自定义方式创建对象的共同点:都是对象,都可以创建对象,都可以传入参数
工厂模式和自定义方式创建对象的不同点:
- 工厂模式:1 函数名是小写;2 有new; 3 有返回值 4 new之后的对象是当前的对象 5 直接调用函数就可以创建对象
- 自定义构造函数:1 函数名是大写 2 没有new 3 没有返回值 4 this是当前的对象 5 通过new的方式来创建对象