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={};