ECMA-262 把對象(object)定義為“屬性的無序集合,每個屬性存放一個原始值、對象或函數”。嚴格來說,這意味著對象是無特定順序的值的數組。
面向對象語言的要求
一種面向對象語言需要向開發者提供四種基本能力:
對象的創建和銷毀都在 JavaScript 執行過程中發生,理解這種范式的含義對理解整個語言至關重要。
JavaScript 中的所有事物都是對象:字符串、數值、數組、函數...
此外,JavaScript 允許自定義對象。
JavaScript 對象
JavaScript 提供多個內建對象,比如 String、Date、Array 等等。
對象只是帶有屬性和方法的特殊數據類型。
訪問對象的屬性
屬性是與對象相關的值。
訪問對象屬性的語法是:
objectName.propertyName
這個例子使用了 String 對象的 length 屬性來獲得字符串的長度:
var message="Hello World!";var x=message.length; // 12
訪問對象的方法
方法是能夠在對象上執行的動作。
您可以通過以下語法來調用方法:
objectName.methodName()
這個例子使用了 String 對象的 toUpperCase() 方法來將文本轉換為大寫:
var message="Hello world!";var x=message.toUpperCase(); // HELLO WORLD!
創建 JavaScript 對象
通過 JavaScript,您能夠定義并創建自己的對象。
創建新對象有兩種不同的方法:
方式一:實例
<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>
替代語法(使用對象 literals):
方式二:實例
<script> var person={firstname:"Bill",lastname:"gates",age:56,eyecolor:"blue"} document.write(person.firstname + " is " + person.age + " years old.");</script>
方式三:使用對象構造器
本例使用函數來構造對象:
<script> function person(firstname,lastname,age,eyecolor){ this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; } //創建對象 var myFather = new person("Bill","Gates",56,"blue"); document.write(myFather.firstname + " is " + myFather.age + " years old.");</script>
創建 JavaScript 對象實例
一旦您有了對象構造器,就可以創建新的對象實例,就像這樣:
var myFather=new person("Bill","Gates",56,"blue");var myMother=new person("Steve","Jobs",48,"green");
把屬性添加到 JavaScript 對象
您可以通過為對象賦值,向已有對象添加新屬性:
假設 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 對象
方法只不過是附加在對象上的函數。
在構造器函數內部定義對象的方法:
<script> function person(firstname,lastname,age,eyecolor){ this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; this.changeName=changeName; // 構造器中定義函數 function changeName(name){ this.lastname=name; }}//創建對象 var myMother=new person("Steve","Jobs",56,"green");myMother.changeName("Ballmer");document.write(myMother.lastname); // Ballmer</script>
JavaScript 類
JavaScript 是面向對象的語言,但 JavaScript 不使用類。
在 JavaScript 中,不會創建類,也不會通過類來創建對象(就像在其他面向對象的語言中那樣)。
JavaScript 基于 prototype,而不是基于類的。
JavaScript for...in 循環
JavaScript for...in 語句循環遍歷對象的屬性。
for (對象中的變量){ 要執行的代碼}
注釋:for...in 循環中的代碼塊將針對每個屬性執行一次。
實例
循環遍歷對象的屬性:
<script> // function myFunction(){ var x; var txt=""; var person={fname:"Bill",lname:"Gates",age:56}; //遍歷對象 for (x in person){ //將遍歷的結果封裝到txt中 txt=txt + person[x]; } console.log(txt); // BillGates56 // }</script>
對象字面量
函數的調用:obj2.sayHi();
var obj = {aaa: 111}; varjson = {“aaa”:111};
對象字面量定義方法和json很像,只有一點不同,json的key要求必須加“”;
Json組成
Var json = {“aaa”: 1,“bbb”: 2,“ccc”: 3,“ddd”: 4}
Json由{}和key:value以及逗號組成,三部分。(只有一個鍵值對key:value時,可以沒有逗號)
Json數據格式(重要)
json是一種與語言無關的數據交換的格式,作用:
1.使用ajax進行前后臺數據交換
2.移動端與服務端的數據交換
1.Json的格式與解析
json有兩種格式:
1)對象格式:{"key1":value,"key2":value,"key3":value...}
2)數組/集合格式:[obj,obj,obj...]
例如:user對象 用json數據格式表示(user對象里面有4個屬性)
{"username":"zhangsan","age":28,"password":"123","addr":"北京"}
List<Product> 用json數據格式表示(集合里面有3個paoduct對象)
[{"pid":"10","pname":"小米4C"},{},{}]
注意:對象格式和數組格式可以互相嵌套
json的key是字符串 json的value是Object(json的值可以為函數)
json的解析:
json是js的原生內容,也就意味著js可以直接取出json對象中的數據
var person = {"firstname":"張","lastname":"三豐","age":100}; //取出lastname alert(person.lastname); //取出age alert(person.age);</script>
參數和傳值問題
一、簡單類型數據做參數,函數內部對參數的修改不應影響外部變量簡單類型傳數值。
二、復雜類型數據做參數,函數內部對參數的修改會應影響外部變量復雜類型傳地址。
如有不足請多多指教!希望給您帶來幫助!
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接
新聞熱點
疑難解答