亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

初入ES6-Symbol

ivyzhang / 2799人閱讀

摘要:原始的數(shù)據(jù)類型和一樣是第七種數(shù)據(jù)類型創(chuàng)建只能用函數(shù)來(lái)創(chuàng)建,而且不能用可以有參數(shù),用來(lái)區(qū)分每個(gè)只能顯試的轉(zhuǎn)化此處是字符串不能在轉(zhuǎn)為數(shù)字報(bào)錯(cuò)不能隱式的轉(zhuǎn)化報(bào)錯(cuò)作為對(duì)象的的屬性名稱主要用在可計(jì)算的屬性名稱,即使帶有中括號(hào)的屬性名稱一般是私有不可以

Symbol原始的數(shù)據(jù)類型和string, boolean,null,undefined,number一樣,是JS第七種數(shù)據(jù)類型

//創(chuàng)建Symbol
const symbol = Symbol()        //symbol只能用函數(shù)Symbol來(lái)創(chuàng)建,而且不能用new 可以有參數(shù),用來(lái)區(qū)分每個(gè)symbol;
typeof symbol      //"symbol";
//只能顯試的轉(zhuǎn)化
String(symbol)  ==="Symbol()"    //此處是字符串;
Boolean(symbol) === true;        //
//不能在轉(zhuǎn)為數(shù)字
Number(symbol)  //報(bào)錯(cuò)
//不能隱式的轉(zhuǎn)化
symbol + "this is srging"    //報(bào)錯(cuò)

作為對(duì)象的的屬性名稱
主要用在可計(jì)算的屬性名稱,即使帶有中括號(hào)的屬性名稱;一般是私有不可以遍歷的屬性

//對(duì)象的屬性都是字符串
var obj = {
    name : "obama",
    "current age" : 77            //不能在使用點(diǎn)號(hào)調(diào)用
    [skin] : "black"                //報(bào)錯(cuò)的寫(xiě)法或者用來(lái)計(jì)算的屬性名稱,
};
obj.name === obj["name"]        //true
obj.name = "bush"            //覆蓋前面的屬性‘obama"
var ss = Synbol();
var newObj ={
    name :"obama",
    [ss]:34            //如果沒(méi)有中括號(hào),此處就是一個(gè)字符串
}
obj[ss] = 34        //兩種寫(xiě)法都可以,但是不能用點(diǎn)號(hào)
//作為屬性,不能用for in for of 等常規(guī)的遍歷方法,遍歷到的
//只能用Object.getOwnPropertySymbols()方法返回一個(gè)數(shù)組;也可以用新的方法 Reflect.ownKeys();
let obj ={
    [Symbol("test")] : "the symbol",
    test : "the string"
}

Symbol() 和Symbol.for() 參數(shù)都是字符串,后者用來(lái)生成相同的symbol;

var s = Symbol("34");            ///每次調(diào)用都返回新的值,
var ss = Symbol.for("34");        //每次調(diào)用先檢查全局是否有,沒(méi)有在返回新的值
var sss = Symbol.for("34");
s ===ss //false;
ss ===sss //true;

//Symbol.keyFor()//用來(lái)返回Symbol.for()的參數(shù)值,也就是已經(jīng)生成的,沒(méi)有的話就Undefined;
var v  = Symbol("name");
var vv = Symbol("the name");
Symbol.keyFor(vv)  ->"the name";
 Symbol.keyFor(v)  ->undefined;        //訪問(wèn)一個(gè)沒(méi)有定義的symbol會(huì)報(bào)錯(cuò)
 

獲取Symbol屬性的方法

const symbol = Symbol();
const obj = {

    [symbol]:"this is symbol",
    name :"obama"
}
Object.keys()
Object.getOwnPropertyNames()
//以上的方法都不能獲取私有的symbol的屬性
Object.getOwnPropertySymbols()    //只有此方法可以獲取值

ES6開(kāi)放11個(gè)內(nèi)部方法的操作

1,Symbol.hasInstance 執(zhí)行instanceof 調(diào)用的方法
在CHROME中查看,函數(shù)的的繼承Function.prototype中增加的方法Symbol(Symbol.hasInstance)

function Mya(){
};

Object.defineProperty(Mya,Symbol.hasInstance,{
    value :"this is test "        //此處是描述屬性特性值value
})
var s = new Mya();
s instanceof Mya     //一般的寫(xiě)法
Mya[Symbol.hasInstance](s)    //作為方法直接調(diào)用

2,Symbol.match,replace,serch,split方法

var str = "abcdefg";
var reg =/ab/g;
str.match(reg);        //["ab"]
str.replace("cd",reg)//"ababefg"
//可以使用一個(gè)對(duì)象保存這些屬性,隨后直接作為這些方法的參數(shù)
const obj ={
    [Symbol.search]:"return "the test""
}
str.search(obj)
    

3,Symbol.unscopables使用和廢除的with語(yǔ)句有關(guān),作為數(shù)組對(duì)象的新方法,暫做了解

4,Symbol.toPrimative,toStringTag重新定義Object對(duì)象的基本值

var obj = {
    name : "obama"
};
var str = "sssss";
//對(duì)于大多數(shù)對(duì)象來(lái)說(shuō),如果要執(zhí)行一些原始值操作,一般會(huì)調(diào)用valueOf()和toString();返回初始值

5,Symbol.isConcatSpreadable顧名思義concat是否可以展開(kāi)

var arr1 = [1,2,3,4];
var arr2 = ["a","b","c","d"];
arr1.concat(arr2)        //返回新的數(shù)組[1, 2, 3, 4, "a", "b", "c", "d"];
arr1.concat(arr2,null,null,null)   // [1, 2, 3, 4, "a", "b", "c", "d", null, null, null]
//對(duì)于concat的參數(shù)如果是數(shù)組就自動(dòng)展開(kāi)作為多帶帶的存在,
arr2[Symbol.isConcatSpreadable] = false;
arr1.concat(arr2,null,null,null)         //[1, 2, 3, 4, Array(4), null, null, null]沒(méi)有展開(kāi)
//類似數(shù)組的對(duì)象1,變量是數(shù)字的屬性,不是的話,就是空的值和length的屬性(必須)作為數(shù)組元素的個(gè)數(shù)如:
var obj = {
    a  : "a",
    3 : "a",            //數(shù)字鍵會(huì)在數(shù)組里的位置
    b : "b",
    2 : "b",
    length :6,        //影響添加數(shù)量,多余的是undefined
    [Symbol.isConcatSpreadable] : true
}
var ar = [1,"aa"];
ar.concat(obj)    //[1, "aa", empty × 2, "b", "a", empty × 2]
//此屬性是一個(gè)可選屬性,不在任何的對(duì)象里,

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/88847.html

相關(guān)文章

  • HTML & CSS之小白初入江湖

    摘要:之小白初入江湖超文本標(biāo)記語(yǔ)言簡(jiǎn)稱是一種用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語(yǔ)言。描述了一個(gè)網(wǎng)站的結(jié)構(gòu)語(yǔ)義隨著線索的呈現(xiàn),使之成為一種標(biāo)記語(yǔ)言而非編程語(yǔ)言。是塊級(jí)元素,是行內(nèi)元素。層疊樣式表簡(jiǎn)稱是一種用來(lái)為結(jié)構(gòu)化文檔如添加樣式的工具。 HTML & CSS之小白初入江湖 1. HTML 超文本標(biāo)記語(yǔ)言(HyperText Markup Language, 簡(jiǎn)稱HTML)是一種用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語(yǔ)言...

    fai1017 評(píng)論0 收藏0
  • HTML & CSS之小白初入江湖

    摘要:之小白初入江湖超文本標(biāo)記語(yǔ)言簡(jiǎn)稱是一種用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語(yǔ)言。描述了一個(gè)網(wǎng)站的結(jié)構(gòu)語(yǔ)義隨著線索的呈現(xiàn),使之成為一種標(biāo)記語(yǔ)言而非編程語(yǔ)言。是塊級(jí)元素,是行內(nèi)元素。層疊樣式表簡(jiǎn)稱是一種用來(lái)為結(jié)構(gòu)化文檔如添加樣式的工具。 HTML & CSS之小白初入江湖 1. HTML 超文本標(biāo)記語(yǔ)言(HyperText Markup Language, 簡(jiǎn)稱HTML)是一種用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語(yǔ)言...

    crossoverJie 評(píng)論0 收藏0
  • 初入vue配合el-table做批量下載

    摘要:剛開(kāi)始做項(xiàng)目,正好碰上了一個(gè)批量下載的功能就是下面圖片中的一個(gè)導(dǎo)出的功能后臺(tái)返回的數(shù)據(jù)格式是這樣的,如下做批量下載后臺(tái)需要前端給一個(gè)必需字段,在我這里也就是上代碼這樣我們的就是一個(gè)由組成的數(shù)組,搞定 剛開(kāi)始做vue項(xiàng)目,正好碰上了一個(gè)批量下載的功能 就是下面圖片中的一個(gè)導(dǎo)出的功能showImg(https://segmentfault.com/img/bVbsuIr); 后臺(tái)返回的數(shù)據(jù)...

    tunny 評(píng)論0 收藏0
  • 初入Vue,node,express,mongodb

    摘要:本人前端萌新大概花了一周多一點(diǎn),完成了一個(gè)前后端分離解耦的簡(jiǎn)易個(gè)人博客項(xiàng)目。項(xiàng)目前后端分離,路由完全交給處理,后端只負(fù)責(zé)操作數(shù)據(jù)庫(kù),暴露。目前項(xiàng)目提供做學(xué)習(xí)用途,希望能給大家一些幫助,對(duì)全棧項(xiàng)目有一個(gè)初步的了解,謝謝。 本人前端萌新大概花了一周多一點(diǎn),完成了一個(gè)前后端分離解耦的簡(jiǎn)易個(gè)人博客項(xiàng)目。項(xiàng)目前后端分離,路由完全交給vue-router處理,后端只負(fù)責(zé)操作數(shù)據(jù)庫(kù),暴露api。 技...

    dingding199389 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<