<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                * 如何創建并使用對象 * 什么是構造器函數 * 內置對象與運用 ***** # 對象 定義對象用`{}`,叫做 **對象文本標識法** 用逗號分隔屬性 鍵值對之間用冒號`:`分隔 屬性名(key)可不加引號`''`,盡量不加引號 ? 對象的屬性為函數,稱做**方法** > 例外(必須添加引號): > 屬性名是保留字; > 屬性名包含空格或特殊字符 > 屬性名以數字開頭 ``` var o = { something: 1, 'yes or no': 'yes', '!@#$%^': true } ``` ### 哈希表,關聯型數組 哈希表,關聯型數組,通常以字符串為鍵值; 一般性數組,索引型、枚舉型數組,通常以數字為鍵值。 ### 訪問對象屬性 * 中括號表示法 `person['name']`,訪問不合法屬性名及動態(不定)屬性名 * 點號表示法 `person.name`,訪問合法屬性名,常用 ? ### 修改屬性與方法 添加、更新:`obj.prop = value;` 刪除:`delete obj.prop` ### this 推薦閱讀《你不知道的JavaScript》(上卷) this的四種綁定規則 ### 構造器函數 使用new操作符調用函數,函數執行特殊操作,創建對象 ### 全局對象 瀏覽器 window ### 構造器屬性 創建對象的時候添加的特殊屬性 ``` var obj = new Object(); obj.constructor; // Object() var o = {}; o.constructor; // Object() ``` ### 返回對象的函數 ### 傳遞對象(的引用) ### 對象比較 傳遞對象,===比較為true 定義兩次,===比較為false # 內建對象 數據封裝類對象: * Object * Array * Boolean * Number * String 工具類對象: * Math * Date * RegExp 錯誤類對象: ***** ## Object 所有對象的父級對象 ``` var o = {}; var o = new Object(); ``` ## Array ``` var a = new Array(); var a = []; ``` 數組方法: * push() * pop() * shift() * unshift() * sort() * join() * slice() * splice() ``` var a = [1,2,3,4,5]; a.slice(2,4); // [3, 4] a.splice(1,2,'true','hi',false); // [2, 3] a; // [1, "true", "hi", false, 4, 5] ``` ## Function ? 避免使用,缺點同eval() ### 函數對象方法 * call() * apply() 讓對象借用其他對象的方法; 將函數的this綁定到首參身上,不傳或傳null則綁定到全局對象; 二者區別在于參數的傳遞方式,apply通過數組傳參; ### arguments ``` function f(){ console.log(typeof arguments); return arguments; } f(12,23,45,67); // object // Arguments(4)?[12, 23, 45, 67, callee: ?, Symbol(Symbol.iterator): ?] ``` arguments是對象; 該屬性引用的是 **當前被調用的函數對象** 匿名函數的遞歸調用: ``` (function(count){ if(count < 5){ alert(count); arguments.callee(++count); // 調用當前匿名函數 } })(1) ``` ## Boolean ``` Boolean('test') // true Boolean('') // false Boolean({}) // true var b1 = new Boolean(true); // truthy b1.valueOf(); // true var b2 = new Boolean(false); // falsy b2.valueOf(); // false Boolean(b1); // 所有布爾對象都等于true // true Boolean(b2); // true ``` ## Number ``` Number.MAX_VALUE // 1.7976931348623157e+308 Number.MIN_VALUE // 5e-324 Number.POSITIVE_INFINITY // Infinity Number.NEGATIVE_INFINITY // -Infinity Number.NaN // NaN ``` Number對象 * toFixed() * toExponential() * toString([radix]) ## String ``` var primitive = 'Hello'; typeof primitive; // 普通字符串類型 // "string" var obj = new String('world'); typeof obj; // String對象 // "object" obj; // String?{"world"} obj.valueOf(); // "world" obj.toString(); // "world" ``` 方法: * toUpperCase() * toLowerCase() * charAt() * indexOf() * lastIndexOf() * slice(start, s.length+(end)) * substring(start, (end || 0)) * split() * concat() * valueOf() * search() * match() * replace() ## Math * Math.random() * Math.round() * Math.floor() * Math.ceil() * Math.PI * Math.SQRT2 * Math.E * Math.LN2 * Math.LN10 * Math.min() * Math.max() * Math.pow(2,3); // 8 * Math.sqrt(9); // 3 ## Date ## RegExp ``` var re = new RegExp("j.*t", 'gmi'); var re = /j.*t/img; re.global; ``` 方法: test() 是否匹配 exec() 返回數組 ### 字符串方法 search() & match() ``` var s = new String('helloJavaScriptWorld'); s.match(/a/); // ["a", index: 6, input: "helloJavaScriptWorld", groups: undefined] s.match(/a/g); // (2)?["a", "a"] s.match(/j.*a/i) // ["Java", index: 5, input: "helloJavaScriptWorld", groups: undefined] s.search(/j.*a/i); // 5 ``` replace() ``` s.replace(/[A-Z]/g, ''); // "helloavacriptorld" s.replace(/[A-Z]/, ''); // "helloavaScriptWorld" s.replace(/[A-Z]/, '_$&'); // "hello_JavaScriptWorld" s.replace(/[A-Z]/g, '_$&'); // "hello_Java_Script_World" s.replace(/([A-Z])/g, '_$1'); // "hello_Java_Script_World" ``` ``` var email = 'gnkevin@126.com'; email.replace(/(.*)@.*/, "$1"); // "gnkevin" ``` split() ``` var csv = 'one, two , three ,four'; csv.split(/\s*,\s*/); // ["one", "two", "three", "four"] ``` 用字符串代替過于簡單的regexp對象 ``` "test".replace('t','r'); // "rest" "test".replace(new RegExp('t'), 'r'); // "rest" ``` ## Error * ReferenceError * SyntaxError * TypeError # 小結 Number()、String()、Boolean()的調用分兩種: 使用new調用——新建對象; 不適用new調用——將任意值轉換為基本數據類型。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看