创建对象的三种方式
1.调用系统的构造函数创建对象
2.自定义构造函数创建对象(结合第一种和需求通过工厂模式创建对象)
3.字面量的方式创建对象
第一种方式:
实例化对象
var obj=new Object();
对象有特征——属性和行为——方法
添加属性:对象.名字=值;
obj.name="老王";
obj.age=30;
obj.sex="男";
//添加方法:对象.名字=函数;
obj.eat=function(){
console.log("喜欢吃面条")
};
obj.cook=function(){
console.log("切菜");
console.log("刷碗");
obj.play=function(){
console.log("喜欢打游戏和睡懒觉");
};
console.log(obj.name); //获取——输出
console.log(obj.age);
console.log(obj.sex);
obj.eat();
obj.play();
例:创建一个手机对象,手机有型号,有颜色,可以打电话发短信
var phone=new Object();
phone.size="P30";
phone.color="skyblue";
phone.call=function (){
console.log("打电话");
};
phone.sendMessage=function(){
console.log("摄像头是假的吗?是的");
};
phone.call();
phone.sendMessage();
例:创建一个狗的对象
var dog=new Object();
dog.name="哮天犬";
dog.say=function(){
console.log("汪汪汪");
};
对象不能分辨出到底是属于什么类型↓
如何获取该变量(对象)是不是属于什么类型?
语法:变量 instanceof 类型的名字——>布尔类型,true就是这种类型,false不是这种类型
自定义构造函数创建对象
函数和构造函数的区别:名字是不是大写(首字母是大写)
1.在内存中开辟(申请一块空闲的)空间,存储创建的新的对象
2.把this设置为当前的对象
3.设置对象的属性和方法的值
4.把this这个对象返回
function Person( ){
console,log("啊啊啊五月天")
}
Person( );
function Person(){
this.name="老王";
this.age=30;
this.sayHi=function(){
console.log("我叫"+this.name+"年龄是"+this.age);
};
}
var obj=new Person();
console.log(obj.name);
console.log(obj.age);
obj.sayHi();
字面量的方式创建对象
var obj={};//空对象
//添加属性
obj.name="老王";
obj.age=10;
//添加方法
obj.sayHi=function(){
console.log("我是"obj.name);
};
obj.sayHi();
优化后的写法
var obj2={
name: "老王";
age: 30,
sayHi: function(){
console.log("我是:"this.name);
},
eat: function(){
console.log("吃了");
}
};
obj.sayHi();
obj.eat();
缺陷:一次性的对象