溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

js中對(duì)象和面向?qū)ο笈cJson介紹

發(fā)布時(shí)間:2020-10-17 13:36:40 來源:腳本之家 閱讀:199 作者:muzidigbig 欄目:web開發(fā)

ECMA-262 把對(duì)象(object)定義為“屬性的無序集合,每個(gè)屬性存放一個(gè)原始值、對(duì)象或函數(shù)”。嚴(yán)格來說,這意味著對(duì)象是無特定順序的值的數(shù)組。

面向?qū)ο笳Z言的要求

一種面向?qū)ο笳Z言需要向開發(fā)者提供四種基本能力:

  1. 封裝 - 把相關(guān)的信息(無論數(shù)據(jù)或方法)存儲(chǔ)在對(duì)象中的能力
  2. 聚集 - 把一個(gè)對(duì)象存儲(chǔ)在另一個(gè)對(duì)象內(nèi)的能力
  3. 繼承 - 由另一個(gè)類(或多個(gè)類)得來類的屬性和方法的能力
  4. 多態(tài) - 編寫能以多種方法運(yùn)行的函數(shù)或方法的能力

對(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ì)象有兩種不同的方法:

  1. 定義并創(chuàng)建對(duì)象的實(shí)例
  2. 使用函數(shù)來定義對(duì)象,然后創(chuàng)建新的對(duì)象實(shí)例

方式一:實(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>

js中對(duì)象和面向?qū)ο笈cJson介紹

替代語法(使用對(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)造器

js中對(duì)象和面向?qū)ο笈cJson介紹

本例使用函數(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ì)象字面量

js中對(duì)象和面向?qū)ο笈cJson介紹

js中對(duì)象和面向?qū)ο笈cJson介紹

函數(shù)的調(diào)用:obj2.sayHi();

var obj = {aaa: 111};           varjson = {“aaa”:111};

對(duì)象字面量定義方法和json很像,只有一點(diǎn)不同,json的key要求必須加“”;

js中對(duì)象和面向?qū)ο笈cJson介紹

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ù)雜類型傳地址。

js中對(duì)象和面向?qū)ο笈cJson介紹

如有不足請(qǐng)多多指教!希望給您帶來幫助!

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)億速云的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

向AI問一下細(xì)節(jié)
AI