javaScript面向?qū)ο?/h2>

面向?qū)ο螅海ㄈf物皆是對象。) js中每個對象都是一個自成一體的實體。內(nèi)部包含一個或多個 相關(guān)的變量和函數(shù)分別叫做屬性和方法。

引用類型: 數(shù)組 函數(shù) 對象 存儲的是 地址

基本數(shù)據(jù)類型:字符串 數(shù)值 Bool; 存儲的是值。
面向?qū)ο螅?br> 編程語言: 包含類和對象,三個特征: 封裝,多態(tài) ,繼承。
編程思想:構(gòu)造函數(shù)。(相當(dāng)于js中的類)
對象其實就是一種引用類型,而對象的值就是引用類型的實例,在js中引用類型是一種數(shù)據(jù)結(jié)構(gòu),將數(shù)據(jù)和功能組織再一起,他常常被稱為類,而js中沒有類的概念,雖然js是一門面向?qū)ο蟮恼Z言,卻不具備傳統(tǒng)面向?qū)ο笳Z言所支持的類和接口等基本結(jié)構(gòu)。

(1)直接創(chuàng)建對象(包括增刪改查)
<script type="text/javascript">
 //創(chuàng)建一個空對象
 var per1 = new Object();
 //把對象所需要的屬性或者方法添加進(jìn)去
 per1.name = "女神";
 per1.gender= "女"
 console.log(per1.gender);
 console.log(per1.name);
 //給對象添加方法(函數(shù));
 per1.manager = function(){ //對象下的方法。
 //用匿名函數(shù) 調(diào)用的時候直接可以用自定義對象的方法即可。
 alert("別說話,吻我");
 }
 per1.manager(); //調(diào)用對象下的方法
 //刪除對象中的屬性:delete+對象的屬性名
 delete per1.name;
 console.log(per1.name);   得到的結(jié)果是undefined;
 //函數(shù)/方法 當(dāng)函數(shù)屬于一個對象時,該函數(shù)就是這個對象下的一個方法,通過方法名來調(diào)用函數(shù)。
 //屬性 /變量 當(dāng)變量屬于某一個屬性時,該變量就是這個對象下的一個方法,通過對象下的屬性名來調(diào)用變量。 
 console.log(person.name);
 console.log(person.age);
 person.manager();
 //創(chuàng)建第二個對象
 var per2 = new Object;
 per2.name = "老宋"
 per2.age = 24;
 per2.gender = "男";
 per2.hobby = "女";
 // 通過.開訪問對象屬性
 //還可以通過[]來訪問對象的屬性。 遍歷屬性時 使用。
 console.log(per2["name"]); // []中必須是屬性字符串或者保存屬性字符串的變量
 //遍歷對象的屬性 for...in.....獲取對象的屬性。
 for(var property in per2){ //property:屬性名
 }
 </script>```

(2)JSON 法創(chuàng)建對象(使用字面量創(chuàng)建)

//使用字面量創(chuàng)建js對象
var person ={
name: "黃琴",
age: "18",
anager: function(){
console.log("別說話,吻我" );
}
}
for(var property in person){ // 遍歷每一個屬性
console.log(property+"="+person[property]);
}
</script>```
(3)工廠模式的方法創(chuàng)建對象

<script type="text/javascript">
 //通過構(gòu)造函數(shù)創(chuàng)建js對象???
 //1 創(chuàng)建出對象的構(gòu)造函數(shù) (定義構(gòu)造函數(shù))
 function CreatPerson(name,age,hobby){
 //1.1 創(chuàng)建一個新對象
 //var person = new Object(); //new 構(gòu)造函數(shù)
 var person = { //字面量創(chuàng)建
 // 1.3 給新對象添加屬性和方法
 name:name,
 age: age,
 hobby:hobby,
 sayhi:function(){
 alert('你好');
 }
 }
 // 1.3把創(chuàng)建好的對象返回出去
 return person; 
 }
 // 2 調(diào)用函數(shù)
 var per1 = CreatPerson("張三",23,"足球");
 console.log(per1);
 per1.sayhi();
 var per2 = CreatPerson("李四",23,"籃球");
 console.log(per2 instanceof CreatPerson); //檢測某個對象是不是另一個對象。 false
 console.log(per2); 
 </script>

創(chuàng)建對象:
1.工廠模式:用函數(shù)來封裝以特定的接口創(chuàng)建對象的細(xì)節(jié)。
instanceof 檢測不出創(chuàng)建的對象是不是構(gòu)造函數(shù)的對象 返回值:false;不是構(gòu)造函數(shù)創(chuàng)建出來的對象
缺點:沒有解決對象識別的問題,
(最好運用傳參的方式)
調(diào)用函數(shù)的時候傳遞參數(shù)。
2.new+構(gòu)造函數(shù)模式:(構(gòu)造函數(shù)始終都是應(yīng)該以一個大寫字母開頭,而非構(gòu)造函數(shù)則應(yīng)該以一個小寫字母為開頭。)
構(gòu)造函數(shù)創(chuàng)建的步驟。
創(chuàng)建一個新的對象,
將構(gòu)造函數(shù)的作用域賦給新對象(因此this就指向了這個新對象)
為這個新對象添加屬性。
返回新的對象。instanceof 可以檢測出對象的類型; 如果是對象返回值為true;不是對象返回值為false;

構(gòu)造函數(shù)和工廠模式不同:
沒有顯示的創(chuàng)建對象;
直接降屬性和方法賦給了this對象。
沒有return語句。
構(gòu)造函數(shù)始終都是應(yīng)該以一個大寫字母開頭,而非構(gòu)造函數(shù)則應(yīng)該以一個小寫字母為開頭。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容