JavaScript內置對象-Object

来源:http://www.cnblogs.com/qqandfqr/archive/2017/02/25/6441078.html
-Advertisement-
Play Games

▓▓▓▓▓▓ 大致介紹 JavaScript的簡單數據類型包括:Undefined、Null、Boolean、Number、String。JavaScript中這五種基本數據類型不是對象,其他所有值都是對象。其中還有一些對象子類型,通常被稱為內置對象(引用類型) 1、Object 2、Array 3 ...


▓▓▓▓▓▓ 大致介紹

  JavaScript的簡單數據類型包括:Undefined、Null、Boolean、Number、String。JavaScript中這五種基本數據類型不是對象,其他所有值都是對象。其中還有一些對象子類型,通常被稱為內置對象(引用類型)

    1、Object

    2、Array

    3、Date

    4、RegExp

    5、Function

    6、Boolean

    7、Number

    8、String

 

▓▓▓▓▓▓ 創建對象的三種方法

  創建對象有三種方法:

    1、對象字面量,即用{}生成,一個對象字面量就是包圍在一對花括弧中的零個或多個“名/值”對

    2、構造函數,利用Object()構造函數生成

    3、Object().create方法生成

    註意:推薦第一種寫法,第三種方法多用在繼承的場合

        var myobj = {
            key : value;
        }

        var myobj = new Object()
        myobj.key = value;

        var myobj = Object.create(Object.prototype);
        myobj.key = value;

 

 

▓▓▓▓▓▓ 引用

  對象通過引用來傳遞,它們永遠不會被覆制。簡單來說就是多個變數指向同一個對象,那麼他們都是這個對象的引用,多個變數它們都指向同一個記憶體地址,如果通過一個變數修改了指向的對象,那麼所有指向這個對象的變數都會發生改變

        var o  = {
            name : 'laowang'
        };

        var b = o;
        b.name = 'liu';
        console.log(o.name); //liu

 

▓▓▓▓▓▓ 屬性操作

  讀取屬性

  讀取對象的屬性有兩種方法,一種是用點運算符,另一種是用方括弧運算符

        var o  = {
            name : 'laowang'
        };

        o.name; //'laowang'
        o['name']; //'laowang'

 

  

  註意:點操作符要求屬性名滿足標示符的命名規範,而方括弧運算符的方式可以接受任何字元串作為屬性名

  例如:

        var o  = {
            name : 'laowang',
            'super-f' : 2
        };

        console.log(o.super-f); //報錯
        console.log(o['super-f']); //2

 

  可以在方括弧中括住一個字元串表達式的方式來訪問屬性

        var o  = {
            name1 : 'laowang',
            name2 : 'liaomou',
            name3 : 'PDD'
        };

        for(var i=1;i<4;i++){
            console.log(o['name'+i]);//laowang liaomou PDD
        };

 

  在對象中,屬性名永遠都是字元串,如果你使用String以外的其他值作為屬性名,那他首先會被轉換為一個字元串。即使是數字也不例外

        var myObject = {};

        myObject[true] = 'foo';
        myObject[2] = 't';

        myObject['true']; //"foo"
        myObject['2']; //"t"

 

  

  寫入屬性

  可以用點運算符和方括弧運算符寫入屬性

        var myObject = {
            name : 'laowang'
        };

        //兩種方法的效果是一樣的

        var myObject = {};
        myObject.name = 'laowang';
        myObject[name] = 'laowang';

  

  

  查看屬性

  可以使用Object.keys()方法

        var myObject = {
            name : 'laowang',
            address : '西青區'
        };

        console.log(Object.keys(myObject)); //["name", "address"] 

 

  刪除屬性

  刪除屬性可以用delete運算符,它不會觸及原型鏈中的任何對象,刪除對象的屬性可能會讓來自原型鏈中的屬性透現出來

        var myObject = {
            name : 'laowang',
            address : 'xi'
        };

        var anotherObject = Object.create(myObject);
        anotherObject.name = 'xiaoma';
        console.log(anotherObject.name);

        delete anotherObject.name;
        console.log(anotherObject.name); //laowang  刪除了自己本身的屬性,透現出來了原型的屬性

        delete anotherObject.address;
        console.log(anotherObject.address); //xi 不會刪除原型中的屬性

 

  檢測屬性是否存在

  我們要檢測一個屬性是否在對象中,可以使用in操作符

        var myObject = {
            name : 'laowang',
            address : 'xi'
        };

        console.log('name' in myObject); //true
        console.log('sex'in myObject); //false

 

  註意:in操作符會檢查屬性是否在對象及原型鏈中,如果要檢測一個屬性是否在對象中,不涉及原型鏈,可以使用hasOwnProperty()

        var myObject = {
            name : 'laowang',
            address : 'xi'
        };

        var anotherObject = Object.create(myObject);

        console.log('name' in anotherObject); //true
        console.log(anotherObject.hasOwnProperty('name')); //false

 

  遍歷屬性

  有時需要遍歷一個對象的所有屬性,可以使用for..in語句

        var myObject = {
            name : 'laowang',
            address : 'xi',
            sex : 'man'
        };

        for(var i in myObject){
            console.log(myObject[i]); //laowang xi man 
        };

 

  註意:for..in語句會遍歷對象的可枚舉屬性,包括原型鏈

  例如:

        var myObject = {
            name : 'laowang',
            address : 'xi',
            sex : 'man'
        };

        //讓myObject的name屬性變得不可枚舉
        Object.defineProperty(
                myObject,
                'name',
                {enumerable:false}
            );

        for(var i in myObject){
            console.log(myObject[i]); //xi man
        };

   如果想要過濾掉那些你不想要的值,最為常用的過濾器是hasOwnProperty方法,以及使用typeof來排除函數

 

參考資料:

      阮一峰JavaScript標準參考教程(alpha)-語法-對象

      JavaScript語言精粹第三章

      你不知道的JavaScript(上捲)第三章

      JavaScript高級程式設計(第三版)第五章 Object類型


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 談論jquery中bind(),live(),delegate(),on()綁定事件方式 1. Bind() $(selector).bind(event,data,function) Event:必須項;添加到元素的一個或多個事件。 Data:可選;需要傳遞的參數 Function:必需;當綁定事 ...
  • ▓▓▓▓▓▓ 大致介紹 除了Object之外,Array類型恐怕就是JavaScript種最常用的類型了,JavaScript中的數組與其他語言中的數組有很大的區別,例如,數組的每一項可以存放任何值,並且數組的大小事可以動態調整的 ▓▓▓▓▓▓ 創建數組的兩種方法 創建數組有兩種方法:一是用構造函數 ...
  • -html概念:hyper Text Markup Language (超文本標記語言) Html標簽分類: 1 雙標簽 2 單標簽 Html標簽之間的關係: 1 嵌套關係 2 併列關係 Html單標記: 橫線標記 <hr> 換行標記<br> 註釋標記<!– 註釋文本--> ctrl+/ Html雙 ...
  • css的border屬性相信大家都不陌生了,就是給元素加個邊框嘛,在不同的盒模型下,會給元素的寬高帶來怎樣的影響,相信大家也都很熟悉了,這裡就不再贅述,只說說大家平時沒有怎麼留意的東西。 0.border-color與color 大家平時使用border屬性的時候,通常應該是直接寫border:1p ...
  • JavaScript 數據類型 JavaScript 變數 Javascript 運算符 JavaScript 流程式控制制 JavaScript 數組 JavaScript 函數基礎 JavaScript 字元串函數 JavaScript 正則表達式 DOM 基本操作 Window 對象 ...
  • 第一部分 HTML 第一章 職業規劃和前景 職業方向規劃定位: web前端開發工程師 web網站架構師 自己創業 轉崗管理或其他 web前端開發的前景展望: 未來IT行業企業需求最多的人才 結合最新的html5搶占移動端的市場 自己創業做老闆 隨著互聯網的普及web開發成為企業的寵兒和核心 web職 ...
  • 俗話說的好,框架是服務與大家的,包含的功能比較多,代碼多。在現在追求速度的年代。應該根據自己的需求去封裝自己所需要的組件。 下邊就給大家介紹一下自己封裝的一個小彈框組件,不依賴與jQuery,代碼少,適用於一般移動端小項目。 這個插件名稱:MobileUi 包含功能:彈框,正在載入,tips1.5秒 ...
  • 不用JavaScript也能實現閱讀進度條 看圖說話 直接上代碼 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...