引用類型:引用類型是一種數據結構,用於將數據和功能組織在一起。引用類型的值是引用類型的一個實例。 一、Object ECMAScript中的對象其實就是一組數據和功能的結合。 Object類型其實是所有它的實例的基礎,換句話說,Object類型所有具有的任何屬性和方法也同樣存在於更具體的對象中。 c ...
引用類型:引用類型是一種數據結構,用於將數據和功能組織在一起。引用類型的值是引用類型的一個實例。
一、Object
ECMAScript中的對象其實就是一組數據和功能的結合。
Object類型其實是所有它的實例的基礎,換句話說,Object類型所有具有的任何屬性和方法也同樣存在於更具體的對象中。
constructor屬性:該屬性保存了用於創建當前對象的函數,即當前對象的構造函數,object類型的構造函數就是Object()
hasOwnProperty方法:用於檢查給定的屬性是否存在於當前對象的實例中,而不是實例的原型中
isPrototypeOf方法:用於檢查對象object1(父)是否存在於另一個對象object2(子)的原型鏈中
toString()方法:返回對象的字元串表示
valueOf()方法:返回對象的字元串、數值或者布爾值的表示
兩種創建方式:
var o = new Object() var o = { age : 22, name : "小明" }
操作方法:
增:o.sex = "男"; o.eat = function () {}; 刪:delete o.age; 改:o.age = 23; 查:o.name; o[name]; (用於變數) 引用: var other = o; other.age = 24; console.log(o.age) //24 o和other指向的是同一個對象。
原型:每個對象都連接到一個原型對象,並可以從中繼承屬性和方法。所有通過對象字面量創建的對象都連接到Object.prototype。
當我們嘗試去獲取某個對象的屬性時,如果不能從該對象中獲取到,那麼js會試著向上從其原型對象中獲取屬性值,直到到達終點Object.prototype,如果也沒找到那就是undifined。
原型連接在更新時是不起作用的。當我們對某個對象做出改變時,不會觸及該對象的原型。
事例:
Object.prototype.sex = "男"; var o = { age : 22 }; console.log(o); // {age : 22} console.log(o.sex); o.sex //"男" var result = o.hasOwnProperty("age"); //true var result = o.hasOwnProperty("sex"); //false
二、Array
var arr = ["a","b","c","d","e"] js中的數組的每一項可以保存任何類型的數據;
操作方法:
var arr = ["a","b","c","d","e"];
1.轉換方法
var result = arr.toString(); //"a,b,c,d,e" var result = arr.join(); //"a,b,c,d,e" var result = arr.join(""); //"abcde" join預設是按","來分割的
2.棧方法
arr.push("f"); console.log(arr); //["a","b","c","d","e",f"] arr.pop(); console.log(arr); //["a","b","c","d"]
3.隊列方法
arr.unshift("f"); console.log(arr); //["f","a","b","c","d","e"] arr.shift(); console.log(arr); //["b","c","d","e"]
4.位置方法
var result = arr.indexOf("a"); console.log(result); //0
5.操作方法
arr.splice(3,1); //刪除 console.log(arr); //["a","b","c","e"] arr.splice(3,1,"f"); //替換 console.log(arr); //["a","b","c","f","e"] arr.splice(3,0,"f"); // 插入 console.log(arr); //["a","b","c","f","d","e"] var result = arr.slice(2,4);//潛複製 console.log(result) //["c","d"]
6.排序方法
var arr1 = [5,9,3,4,6]; var result = arr1.reverse(); console.log(result); //[6,4,3,9,5] var result = arr.sort(function(a,b){return a-b}); console.log(result); //[3,4,5,6,9]
7.合併方法
var arr1 = ["a","b"]; var arr2 = ["c","d"]; var result = arr1.concat(arr2); console.log(result); //["a","b","c","d"]
數組也是引用類型的,兩個變數指向同一個數組:
var arr1 = arr; arr1.push(1); console.log(arr); //["a","b","c","d",1]