1.对象是什么?
有属性和方法的,具体特指某一事物。
2.创建对象的三种方式:
-
第一种方式:调用系统的构造函数创建对象
var 变量名=new Object;
Object是系统的构造函数,相当于实例化一个对象出来。
var obj=new Object();
//对象有特征==>属性和行为==>方法
//添加属性==>如何添加属性?---对象.名字=值;
obj.name="小苏";
obj.age=30;
obj.sex="女 ";
//添加方法==>如何添加方法?---对象.名字=函数;
obj.play=function (){
console.log("我喜欢踢足球");
}
console.log(obj.name);//获取,可打印出对象的名字(属性)为小苏;
obj.play();//可直接调用该函数,对象的行为为"我喜欢踢足球";
//练习:有一个黄色的小狗,叫大黄,今年已经三岁了,250斤的重量每次走路都很慢,喜欢吃大骨头
/*分解步骤:
1.创建对象
2.找出对象小狗的特征----属性黄色,三岁,250斤
3.该对象小狗的行为----方法---走路很慢,喜欢吃大骨头
*/
var objDog=new Object();
obj.color="黄色";
obj.age=3;
obj.weight=250;
obj.walk=function(){
console.log("走路很慢");
}
obj.eat=function(){
console.log("喜欢吃大骨头");
}
console.log("有一个"+obj.color+"的小狗,叫大黄,今年已经"+obj.age+"岁了,体重为"+obj.weight+"斤")
obj.walk();//调用结果为:走路很慢
obj.eat();//调用结果为:喜欢吃大骨头
在上面第一种方式中,发现如果创建多个对象比较麻烦,但是如何一次性创建多个对象呢?
而结论就是把创建对象的代码封装在一个函数中,简称工厂模式创建对象---调用一次即可创建对象。
function createObject(name,age){
//创建对象
var obj=new Object();
//添加属性
obj.name=name;//此时赋值符号左边是对象的属性,后边为变量name;
obj.age=age;
//添加方法:
obj.sayHi=function (){
//this可在当前这个对象方法中可以访问当前对象属性的值
console.log("您好!我叫"+this.name+"我今年:"+this.age);
}
return obj;
}
//多个对象调用函数
//创建一个人的对象
var per1=createObject("小芳",20);
per1.sayHi();//结果为您好!我叫小芳,我今年20岁
//创建另一个人的对象
var per2=createObject("小明",30);
per2.sayHi();//结果为您好!我叫小明,我今年30岁
-
第二种方式:自定义构造函数创建对象
var obj=new 自定义构造函数();
实则就是我要自己定义一个构造函数,其目的是为了创建对象。
function Person(name,age){
this.name=name;
this.age=age;
this.sayHello=function (){
console.log("Hello!我叫"+this.name+",年龄:"+this.age);
}
}
//创建对象
var obj1=new Person("小张",40);
//该对象在代码执行过程中发生四件事:
/*
1.在内存中开辟(申请一块空闲的空间)空间,存储创建的新的对象
2.把this设置为当前对象
3.设置对象的属性和方法的值
4.把this这个对象返回
*/
obj1.sayHello();
-
第三种方式:字面量的方式创建对象
var obj={};
ar obj={};//空对象
//添加属性
obj.name="小明";
obj.age=19;
//添加方法
obj.sayHalo=function(){
console.log("我叫:"+this.name);
}
obj.sayHalo();
//上面的写法是最基础的,在此基础上优化后为:
var obj3={
name:"小红",
age:"23",
sayHalo:function(){
console.log("我叫:"+this.name);
}
};
obj3.sayHalo();//结果为:我叫小红
字面量创建对象的缺陷:一次性对象;简言之,也就是该对象的属性值是不能改的
最后,通俗的总结三种创建对象方式就是:
- 第一种:调用系统的构造函数创建对象==>var obj=new Object();
- 第二种:自定义构造函数创建对象==>var obj=new 自定义构造函数();
- 第三种方式:字面量的方式创建对象==>var obj={};