js中的對象(object:對象和數組)以及對象的常用方法


對象的本質和意義:(object)

對象是一個整體,用於描述一個事物的所有的相關信息

內容之間用“,”分隔,最后一個不加逗號

對象中一般有屬性(靜態)和方法(動態,方法是作為屬性來存儲的函數。):

你可以想象成對象就是一個人,這個人的身高,體型,性格是他本身的屬性,是靜態的;而這個人喜歡打籃球,喜歡吃東西,這就是他的動作也就是方法,是動態的;

使用{ }去定義一個對象,數據由鍵值對的組合方式;值可以是任意數據類型;

var obj = {

    sex : "不詳",

    socre : 100,

    flag : true,

    sing : function{
       console.log("愛唱歌")
      },

    play : function{
       console.log("打游戲")
      }

  }

對象的操作: 訪問值:(查) console.log(obj.sex); console.log(obj[
"socre"]); console.log(obj.sing()); 添加一個屬性:(增) obj.hobby = "睡覺"; obj["weight"] = “50kg”; obj.dance = function(){   } 修改:(改) obj.sex = “女”; obj[“socre”] = 99; 刪除:(刪) delete obj.flag; delete obj["sex"];

  訪問屬性的時候,可以用obj.屬性或者obj["屬性"];需要執行方法(了解這個人)的時候,需要用“.”的方式去調用。

 

W3C的官網文檔中提到:

 如果通過關鍵詞 "new" 來聲明 JavaScript 變量,則該變量會被創建為對象:

 
        
var x = new String();        // 把 x 聲明為 String 對象
var y = new Number();        // 把 y 聲明為 Number 對象
var z = new Boolean();       //    把 z 聲明為 Boolean 對象

請避免將字符串、數值或邏輯聲明為對象。他們會增加代碼的復雜性並降低執行速度

 

  擴展

JavaScript有3大對象,分別是本地對象內置對象宿主對象;

  這里引用別人的話:本地對象也經常被叫做原生對象或內部對象,包含Global和Math在內的內置對象在《JavaScript高級程序設計》里也被叫做單體內置對象,很多時候,干脆也會直接把本地對象和內置對象統稱為“內置對象”,也就是說除了宿主對象,剩下的都是ECMAScript的內部的“內置”對象。

 

  這里說說內置對象:
  JS內置對象也被稱為內部類。所謂的內部類,就是JavaScript里面封裝好了的類(也就是我們不需要去自己寫,可以拿過來用)。

 

  JavaScript中的內部類大致有:Array,Boolean,Date,Math,Number,String,RegExp.....

 

可以分為兩類:靜態類和動態類

 

  靜態類:不需要new,直接調用這個類的屬性或方法即可,例如:Math    Math.pow()

 

  動態類:需要new,然后再調用對象的方法或者屬性  var arr =  new Array(4,5,6);   arr.push()
 
 

 

數組就是一組數據的集合

js中數組的特點:(有下標,從0開始;有長度,length)

①數組定義時無需指定數據類型;

②數組定義時可以無需指定數組長度;

③數組可以存儲任何數據類型的數據;

④一般是相同的數據類型。

 

數組的創建方式:

①字面量定義:var arr = [值1,值2,值3];(數組文本方法)

②構造函數創建:new Array(值1,值2,值3);            //當括號中沒有值的時候,打印結果為[ ](空數組);

   創建數組並指定長度(只有一個值的時候為起初的長度,可自己增加值來改變這個長度):new Array(size);

  W3C中提出,出於簡潔、可讀性和執行速度的考慮,請使用第一種方法(數組文本方法)

 

var ary = new Array(4);

ary[0] = 12;

ary[1] = 13;

ary[2] = 14;        //加入值      數組名[下標] = 值 

長度為4,只加入了三個值,則第四個值為undefined;

 

數組操作

數組名.方法

    1)push(5,4,3)--向數組末尾添加新的數組項,返回值新數組的長度,原數組改變  
         2)pop()--刪除數組最后一項,沒有參數,返回值刪除項,原數組改變              
         3)unshift()--向數組開頭位置添加,返回值是新數組的長度,原數組改變                    
         4)shift()--刪除數組第一項,沒有參數,返回值刪除項,原數組改變 
 
        (以下是擴展方法) :                        
         5)splice()--原數組改變             
          splice(n,m)--從索引(下標)n開始,刪除m個,返回值以數組的形式返回刪除項          
               splice(n)--從索引n開始刪除到最后             
               splice(0)--原數組清空,返回一個和原來一樣的新數組            
               splice(n,m,z);從索引(下標)n開始,刪除m個,把z添加到刪除的位置                                 
         6)slice(n,m)--從索引n開始,查找到索引m處,不包含m,將查找到的以新數組返回,原數組不變                        
         7)concat--數組的拼接,不改變數組,返回最終連接好的新數組;                                
         8)數組轉為字符串:不改變原數組             
              toString()        join('符號')         (數組.join()可以直接轉數組)
 
清空數組的方式:
①arr.splice(0);
②arr.length = 0;
③arr = [ ];
 
數組的遍歷:
for , for...in
數組可以使用for循環遍歷  
也可以使用for...in遍歷  一般使用for...in
for-in的特點:
     沒有循環條件 
     自動取出下標,
     下標默認從 0 開始 ,最大下標  數組長度-1
     下標的類型為string
 
 
當需要返回兩個值時,可以用對象{ }或數組[ ]的形式返回;
只能用for...in遍歷對象,for不能遍歷對象;(因為對象的鍵是一個變量)在遍歷時[ ]中不能加引號;
 
一些數組類型:
整數數組 :  [12,3,4,5,6]
字符串數組 : ["orange","apple","pear"]
對象數組 : [{sname:"jack",age:19},{sname:"lily",age:18}]
二維數組 : [[1,3,4],[5,6,7],[1,2,5]]   (一個數組的每一項都是一個數組)
    

數組和對象的區別

在 JavaScript 中,數組使用數字索引。

在 JavaScript 中,對象使用命名索引。

數組是特殊類型的對象,具有數字索引。

 

在數組中使用數字(下標)來訪問其“元素”。

在對象使用名稱(屬性名稱和方法名稱)來訪問其“成員”。

 

     在數據類型檢驗的時候,利用typeof來檢驗數組的時候說過會返回一個object;那么怎么檢驗一個數是不是數組呢;

     ①為了解決這個問題,ECMAScript 5 定義了新方法 Array.isArray()

Array.isArray(fruits);     // 返回 true

    ②也可以自己封裝出一個isArray方法

function isArray(x) { return x.constructor.toString().indexOf("Array") > -1; }

     ③假如對象由給定的構造器創建,則 instanceof 運算符返回 true:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
 
fruits instanceof Array     // 返回 true

      ④最准確的數據類型的判斷Object.prototype.toString.call()

let a = "string";
let b = 111;
let c = {};
let d = [1, 2, 3];
let e = function () {
    console.log("eee");
}
let f = undefined;
let g = null;
let h = new Date();
let i = /test/;
let j = true;

console.log(Object.prototype.toString.call(a) === '[object String]');//true
console.log(Object.prototype.toString.call(b) === '[object Number]');//true
console.log(Object.prototype.toString.call(c) === '[object Object]');//true
console.log(Object.prototype.toString.call(d) === '[object Array]');//true
console.log(Object.prototype.toString.call(e) === '[object Function]');//true
console.log(Object.prototype.toString.call(f) === '[object Undefined]');//true
console.log(Object.prototype.toString.call(g) === '[object Null]');//true
console.log(Object.prototype.toString.call(h) === '[object Date]');//true
console.log(Object.prototype.toString.call(i) === '[object RegExp]');//true

console.log(Object.prototype.toString.call(c) === '[object Object]');//true
console.log(Object.prototype.toString.call(d) === '[object Object]');//false
console.log(Object.prototype.toString.call(e) === '[object Object]');//false

   Array.from(對象)可以將一個具有length長度的類數組(偽數組)轉換成真正的數組。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM