Javascript學習筆記(二)Javascript核心之對象和數組

來源:互聯網
上載者:User

  對象是一種複合資料型別.
  建立對象最簡單的方法是你的javascript代碼中包含對象直接量,也可以通過運算子new建立。
var empty = {};  // An object with no properties
var point = { x:0, y:0 };
var circle = { x:point.x, y:point.y+1, radius:2 };
var homer = {
    "name": "Homer Simpson",
    "age": 34,
    "married": true,
    "occupation": "plant operator",
    'email': homer@example.com
};
var a = new Array(); // Create an empty array
var d = new Date();  // Create an object representing the current date and time
var r = new RegExp("javascript", "i");  // Create a pattern-matching object
  建立對象後,我們可以通過"."運算子,在對象中建立新屬性、引用已有屬性、設定屬性值等。
     var book = new Object();    //建立對象
     book.title="JavaScript: The Definitive Guide";
     book.chapter1=new Object();  //作為對象屬性的,嵌套對象
    book.chapter1.title = "Introduction to JavaScript";
    book.chapter1.pages = 11;
    book.chapter2 = { title: "Lexical Structure", pages: 6 };
               alert("Outline: " + book.title + "\n\t" +
      "Chapter 1 " + book.chapter1.title + "\n\t" +
      "Chapter 2 " + book.chapter2.title);               // 從對象中讀取一些屬性.
在上例中,需注意,可以通過把一個值賦給對象的一個新屬性來建立它.
  在JavaScript語句中提到過用for/in語句可以遍曆對象的屬性和方法。
  用in運算子檢查屬性是否存在.如:
if ("x" in o) o.x = 1;//如果存在就設定其屬性值為1.
如果這樣寫:o.x=undefined  //屬性x是存在的,但是沒有值.我常常會這樣寫:if (o.x !== undefined) o.x = 1;
另外,!= =常代替!=.!= =和= = = 區別在於undefined和null,不用區分時可以省略,如:if (o.doSomething) o.doSomething();
  刪除屬性:delete book.chapter2;
  作為關聯陣列的對象:object.property 和object["property"]是等價的.
  通用對象的屬性和方法
   constructor屬性:var d = new Date();d.constructor == Date;  // true
   由於建構函式定義了一個對象的類,所以屬性constructor在有助於確定給定對象的類型.如,可以使用如下代碼來確定一個未知對象的類型:if ((typeof o == "object") && (o.constructor == Date)),也可以用instanceof運算子:if ((typeof o == "object") && (o instanceof Date))
  toString()方法:返回一個字串,該字串代表了調用它的對象的類型或值.當javascript需要將一個對象轉換成字串時就調用這個對象的toString()方法.例如當用"+"串連一個字元和一個對象時,或者把一個對象傳遞給alert()或document.write()方法時,就會調用toString().
  預設的toString()方法提供的資訊並不多.例如下面的代碼只能得到字串"[object Object]":var s = { x:1, y:1 }.toString();所以許多類都定義了自己的toString()方法,例如,當一個數組被轉換成一個字串時,就得到一個數組元素列表,其中每個元素都被轉換成了字串,當一個函數被轉換成字串時,就會獲得該函數的原始碼.第九章將詳細講述.
  toLocaleString()方法:返回該對象局部化的字串表示.Oject類定義的預設toLocaleString()方法自身不做任何局部化,返回的結果與toString()方法返回的完全相同,但是Object 類的子類則可能定義自己的toLocaleString()方法.
  valueOf()方法:與toString()相似,當javascript需要將一個對象轉換成字串之外的原始類型(通常是數字)時,就需要調用它.
  hasOwnProperty方法:如果對象局部定義一個非繼承的屬性,屬性名稱是由一個字串實際參數指定的,那麼該方法將返回true,否則,它將返回false.如:
var o = {};
o.hasOwnProperty("undef");     // false: 沒有定義該屬性
o.hasOwnProperty("toString");  // false: toString是一個繼承屬性
Math.hasOwnProperty("cos");    // true: Math對象有cos屬性
  propertyIsEnumerable()方法:如果對象定義了一個屬性,屬性名稱是由一個字串實際參數指定的,而且該屬性可以用for/in迴圈枚舉出來,那麼該方法返回true,否則,返回false.例如:
var o = { x:1 };
o.propertyIsEnumerable("x");        // true: property exists and is enumerable
o.propertyIsEnumerable("y");        // false: property doesn't exist
o.propertyIsEnumerable("valueOf");  // false: property is inherited
  isPrototypeOf()方法:如果調用對象是實際參數指定的對象的原型對象,該方法返回true,否則返回false.該方法的用途和對象的constructor屬性相似.例如:
var o = {}
Object.prototype.isPrototypeOf(o);        // true: o.constructor == Object
Object.isPrototypeOf(o);                  // false
o.isPrototypeOf(Object.prototype);        // false
Function.prototype.isPrototypeOf(Object); // true: Object.constructor==Function
  數組方法:
    join():可以把一個數組的所有元素都轉換成字串,然後再把它們串連起來,你可以指定一個可選字串來分隔結果字串中的元素.如果沒有指定分隔字串,那麼可以使用逗號分隔元素.
  reverse():將顛倒數組元素的順序並返回顛倒後的數組.它在原數組上執行這一操作,也就是說,它並不 建立一個重排了元素的新數組,而是在已經存在的數組中對數組元素進行重排.
  sort():是在原數組上對數組元素進行排序,返回排序後的數組.如果調用sort()時不傳遞給它參數,那麼它將按照字母順序對數組元素進行排序(如果必要的話,可以暫時將元素轉成字串以執行比較操作)
  concat():能建立並返回一個數組.這個數組包含了調用concat()的原始數組的元素,其後跟隨的是concat()的參數.如果其中有些參數是數組,那麼它就將被展開,其元素將被添加到返回的數組中.但是要注意,concat()並不能遞迴地展開一個元素為數組.
  slice():返回的是指定數組是一個片段.
  splice():插入或刪除數組元素的通用方法.它在原數組上修改數組.
  push()和pop():使我們可以像使用棧那樣來使用數組.方法push()可以將一個或多個新元素附加到數組的尾部.然後返回數組的新長度.方法pop()恰恰相反.
  unshift()和shift():與push()和pop() 非常相似,只不過它們是在數組的頭部進行元素的插入和刪除,而不是在尾部進行元素的插入和刪除.
  toString()和toLocaleString():注意,在輸出的結果中,數組值的周圍沒有方括弧或者其他定界符.
  數組附加:indexof()和lastIndexof(),forEach(),map(),filter()

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.