<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] >[success] # Symbol的一些構造方法 <br/> >[success] ## Symbol.hasInstance 1. 應用場景:判斷`數據類型` ~~~ 以前我們想檢索一個'數據'是'某種數據類型'都是用'typeof',如下: let arr = [] // 定義一個數組 console.log(typeof arr) // object 上面我們想要的是'Array'類型,但是結果卻是'Object',這時候用'typeof'就不行了,這時候 用'Symbol.hasInstance'判斷即可,用'instanceof'也可以。'ES6只是將instanceof作為Symbol.hasInstance的簡寫方法' let arr = [] // 定義一個數組 console.log(arr instanceof Array) // true 等同于下面代碼 let arr = [] // 定義一個數組 console.log(Array[Symbol.hasInstance](arr)) // true ~~~ 2. 定義一個無實例的函數 ~~~ 2.1 首先定義一個'有實例的函數',看一下是什么樣子的,下面的'obj1是Object1類的實例' function Object1(){ // 空函數 } Object1.prototype.test = function(){ console.log('啊啊啊') } let obj1 = new Object1() // 實例化對象 console.log(obj1 instanceof Object1) // 打印 true,證明obj1是Object1類的實例 console.log(Object1[Symbol.hasInstance](obj1)) // true 2.2 接下來定義一個'無實例的函數',下面的'obj2'實際上確實是'Object2'類的實例,在調用過 'Object.defineProperty()'方法之后,'instanceof '就會返回'false',證明'obj2'不是'Object2' 的實例。 function Object2(){ // 空函數 } Object.defineProperty(Object2, Symbol.hasInstance, { // 給MyObject對象定義一個熟悉名為'Symbol.hasInstance'的熟悉,值為一個函數 value: function(v){ return false } }) let obj2 = new Object2() // 實例化對象 console.log(obj2 instanceof Object2) // 打印 false,證明obj2不是Object2的實例 console.log(Object2[Symbol.hasInstance](obj2)) // false ~~~ 3. 通過值來檢查是否為實例 ~~~ // 1. class類中應用的場景 class MyClass { static [Symbol.hasInstance](num) { // 靜態方法(靜態方法不需要實例化對象就可以使用, 例如MyClass[Symbol.hasInstance](4)) return num % 2 === 0 } [Symbol.hasInstance](num) { // 動態方法 return num % 2 === 0 } } console.log(1 instanceof MyClass); // false console.log(2 instanceof MyClass); // true console.log(2 instanceof new MyClass()); // true // 2. 對象中的應用場景 const obj = { [Symbol.hasInstance](num) { return num % 2 === 0 } } console.log(1 instanceof obj); // false ~~~ ~~~ 我們可以通過'Object.defineProperty'方法'改寫一個不可寫屬性 所以其實可以'重寫'所有'內建函數(如Date和Error)'默認的'Symbol.hasInstance'屬性 ~~~ <br/> >[success] ## Symbol.isConcatSpreadable ~~~ 'Symbol.isConcatSpreadable'用來'配置'某'數組'作為'concat()'方法的參數時,是否'展開其數組'元素。 ~~~ 1. Symbol.isConcatSpreadable用法 ~~~ // 設置Symbol.isConcatSpreadable前 const alpha = ['a', 'b', 'c']; const numeric = [1, 2, 3]; let alphaNumeric = alpha.concat(numeric); console.log(alphaNumeric); // ["a", "b", "c", 1, 2, 3] // 設置Symbol.isConcatSpreadable后 numeric[Symbol.isConcatSpreadable] = false; // 收起數組 alphaNumeric = alpha.concat(numeric); console.log(alphaNumeric); // ["a", "b", "c", [1, 2, 3]] // 等同于下面的擴展運算符寫法 let a = ['a', 'b', 'c'] let b = [1, 2, 3] let c = [...a, ...b] // 展開數組 console.log(c) // [ 'a', 'b', 'c', 1, 2, 3 ] let d = [...a, b] // 收起數組 console.log(d) // [ 'a', 'b', 'c', [ 1, 2, 3 ] ] ~~~
                  <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>

                              哎呀哎呀视频在线观看