您好,登錄后才能下訂單哦!
ECMA-262 把對(duì)象(object)定義為“屬性的無序集合,每個(gè)屬性存放一個(gè)原始值、對(duì)象或函數(shù)”。嚴(yán)格來說,這意味著對(duì)象是無特定順序的值的數(shù)組。
面向?qū)ο笳Z言的要求
一種面向?qū)ο笳Z言需要向開發(fā)者提供四種基本能力:
對(duì)象的創(chuàng)建和銷毀都在 JavaScript 執(zhí)行過程中發(fā)生,理解這種范式的含義對(duì)理解整個(gè)語言至關(guān)重要。
JavaScript 中的所有事物都是對(duì)象:字符串、數(shù)值、數(shù)組、函數(shù)...
此外,JavaScript 允許自定義對(duì)象。
JavaScript 對(duì)象
JavaScript 提供多個(gè)內(nèi)建對(duì)象,比如 String、Date、Array 等等。
對(duì)象只是帶有屬性和方法的特殊數(shù)據(jù)類型。
訪問對(duì)象的屬性
屬性是與對(duì)象相關(guān)的值。
訪問對(duì)象屬性的語法是:
objectName.propertyName
這個(gè)例子使用了 String 對(duì)象的 length 屬性來獲得字符串的長(zhǎng)度:
var message="Hello World!"; var x=message.length; // 12
訪問對(duì)象的方法
方法是能夠在對(duì)象上執(zhí)行的動(dòng)作。
您可以通過以下語法來調(diào)用方法:
objectName.methodName()
這個(gè)例子使用了 String 對(duì)象的 toUpperCase() 方法來將文本轉(zhuǎn)換為大寫:
var message="Hello world!"; var x=message.toUpperCase(); // HELLO WORLD!
創(chuàng)建 JavaScript 對(duì)象
通過 JavaScript,您能夠定義并創(chuàng)建自己的對(duì)象。
創(chuàng)建新對(duì)象有兩種不同的方法:
方式一:實(shí)例
<script> var person=new Object(); person.firstname="Bill"; person.lastname="Gates"; person.age=56; person.eyecolor="blue"; document.write(person.firstname + " is " + person.age + " years old."); </script>
替代語法(使用對(duì)象 literals):
方式二:實(shí)例
<script> var person={firstname:"Bill",lastname:"gates",age:56,eyecolor:"blue"} document.write(person.firstname + " is " + person.age + " years old."); </script>
方式三:使用對(duì)象構(gòu)造器
本例使用函數(shù)來構(gòu)造對(duì)象:
<script> function person(firstname,lastname,age,eyecolor){ this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; } //創(chuàng)建對(duì)象 var myFather = new person("Bill","Gates",56,"blue"); document.write(myFather.firstname + " is " + myFather.age + " years old."); </script>
創(chuàng)建 JavaScript 對(duì)象實(shí)例
一旦您有了對(duì)象構(gòu)造器,就可以創(chuàng)建新的對(duì)象實(shí)例,就像這樣:
var myFather=new person("Bill","Gates",56,"blue"); var myMother=new person("Steve","Jobs",48,"green");
把屬性添加到 JavaScript 對(duì)象
您可以通過為對(duì)象賦值,向已有對(duì)象添加新屬性:
假設(shè) personObj 已存在 - 您可以為其添加這些新屬性:firstname、lastname、age 以及 eyecolor:
person.firstname="Bill"; person.lastname="Gates"; person.age=56; person.eyecolor="blue"; var x=person.firstname; console.log(x); // Bill
把方法添加到 JavaScript 對(duì)象
方法只不過是附加在對(duì)象上的函數(shù)。
在構(gòu)造器函數(shù)內(nèi)部定義對(duì)象的方法:
<script> function person(firstname,lastname,age,eyecolor){ this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; this.changeName=changeName; // 構(gòu)造器中定義函數(shù) function changeName(name){ this.lastname=name; } } //創(chuàng)建對(duì)象 var myMother=new person("Steve","Jobs",56,"green"); myMother.changeName("Ballmer"); document.write(myMother.lastname); // Ballmer </script>
JavaScript 類
JavaScript 是面向?qū)ο蟮恼Z言,但 JavaScript 不使用類。
在 JavaScript 中,不會(huì)創(chuàng)建類,也不會(huì)通過類來創(chuàng)建對(duì)象(就像在其他面向?qū)ο蟮恼Z言中那樣)。
JavaScript 基于 prototype,而不是基于類的。
JavaScript for...in 循環(huán)
JavaScript for...in 語句循環(huán)遍歷對(duì)象的屬性。
for (對(duì)象中的變量){ 要執(zhí)行的代碼 }
注釋:for...in 循環(huán)中的代碼塊將針對(duì)每個(gè)屬性執(zhí)行一次。
實(shí)例
循環(huán)遍歷對(duì)象的屬性:
<script> // function myFunction(){ var x; var txt=""; var person={fname:"Bill",lname:"Gates",age:56}; //遍歷對(duì)象 for (x in person){ //將遍歷的結(jié)果封裝到txt中 txt=txt + person[x]; } console.log(txt); // BillGates56 // } </script>
對(duì)象字面量
函數(shù)的調(diào)用:obj2.sayHi();
var obj = {aaa: 111}; varjson = {“aaa”:111};
對(duì)象字面量定義方法和json很像,只有一點(diǎn)不同,json的key要求必須加“”;
Json組成
Var json = {“aaa”: 1,“bbb”: 2,“ccc”: 3,“ddd”: 4}
Json由{}和key:value以及逗號(hào)組成,三部分。(只有一個(gè)鍵值對(duì)key:value時(shí),可以沒有逗號(hào))
Json數(shù)據(jù)格式(重要)
json是一種與語言無關(guān)的數(shù)據(jù)交換的格式,作用:
1.使用ajax進(jìn)行前后臺(tái)數(shù)據(jù)交換
2.移動(dòng)端與服務(wù)端的數(shù)據(jù)交換
1.Json的格式與解析
json有兩種格式:
1)對(duì)象格式:{"key1":value,"key2":value,"key3":value...}
2)數(shù)組/集合格式:[obj,obj,obj...]
例如:user對(duì)象 用json數(shù)據(jù)格式表示(user對(duì)象里面有4個(gè)屬性)
{"username":"zhangsan","age":28,"password":"123","addr":"北京"}
List<Product> 用json數(shù)據(jù)格式表示(集合里面有3個(gè)paoduct對(duì)象)
[{"pid":"10","pname":"小米4C"},{},{}]
注意:對(duì)象格式和數(shù)組格式可以互相嵌套
json的key是字符串 json的value是Object(json的值可以為函數(shù))
json的解析:
json是js的原生內(nèi)容,也就意味著js可以直接取出json對(duì)象中的數(shù)據(jù)
var person = {"firstname":"張","lastname":"三豐","age":100}; //取出lastname alert(person.lastname); //取出age alert(person.age); </script>
參數(shù)和傳值問題
一、簡(jiǎn)單類型數(shù)據(jù)做參數(shù),函數(shù)內(nèi)部對(duì)參數(shù)的修改不應(yīng)影響外部變量簡(jiǎn)單類型傳數(shù)值。
二、復(fù)雜類型數(shù)據(jù)做參數(shù),函數(shù)內(nèi)部對(duì)參數(shù)的修改會(huì)應(yīng)影響外部變量復(fù)雜類型傳地址。
如有不足請(qǐng)多多指教!希望給您帶來幫助!
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)億速云的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。