Maison  >  Article  >  interface Web  >  Explication détaillée de l'utilisation du symbole ES6 (avec code)

Explication détaillée de l'utilisation du symbole ES6 (avec code)

不言
不言avant
2018-10-25 15:31:412722parcourir

Cet article vous apporte une explication détaillée de l'utilisation du symbole ES6 (avec code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

1. Symbol est un nouveau type de données dans ES6, qui fournit des valeurs uniques

{
    // 声明,Symbol声明的变量是唯一的
    let a1 = Symbol();
    let a2 = Symbol();
    console.log(a1 === a2); // false
    // Symbol.for()接收一个参数,作为key值
    // 使用for方法时,会检查这个key值在全局是否注册
    // 如果注册过就返回这个值,否则调用Symbol生成新的独一无二的值
    let a3 = Symbol.for('a3');
    let a4 = Symbol.for('a3');
    console.log(a3 === a4); // true
}

2. Déclarez les attributs de type Symbol dans l'objet

{
    let a1 = Symbol.for('abc');
    let obj = {
        [a1]: '123',
        'abc': '345',
        'df': '456',
    };
    console.log(obj); // {abc: "345", df: "456", Symbol(abc): "123"}
}

. 3. Traversée de symboles

{
    let a1 = Symbol.for('abc');
    let obj = {
        [a1]: '123',
        'abc': 345,
        'df': 456,
    };
    // let of(或者for in)循环拿不到 以Symbol作为属性的值
    for (let key of Object.keys(obj)) {
        console.log(key); // abc  df
    }

    // 只拿到以Symbol作为属性的值,getOwnPropertySymbols返回一个数组
    Object.getOwnPropertySymbols(obj).forEach(function (item) {
        console.log(obj[item]); // 123
    });

    // 对象全部属性和值都拿到,包括Symbol。Reflect.ownKeys返回一个数组
    Reflect.ownKeys(obj).forEach(function (item) {
        console.log(item, obj[item]); // abc 345  df 456  Symbol(abc) "123"
    });
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer