箭头函数 + Symbol -- 暑假Day2

Debugger 命令,就是直接在函数内部写debugger,然后函数会停止在这里

箭头函数

箭头函数,创建函数的另一种简便方法

    let test = (a, b) => a + b; 
    let test = function (a, b) {
    
    
        return a + b;
    }

上述两种表达的意思是一样的
如果只有一个参数,那么也可以将小括号也省略掉

没有参数应该保留括号

如果函数内部要执行复杂逻辑内容,应该用花括号括起来,然后用return返回想要的返回值

箭头函数与普通函数的区别

1. 没有this

箭头函数里面是没有this的,如果在里面使用this就和外部方法的this一样

箭头函数和bind的区别

在这里插入图片描述

这样导致箭头函数不能被new

2. 没有arguments

在函数创建里面,我们可以省略function

    let test = {
    
    
        demo : function () {
    
    
            return 'hello';
        }
    }
    let test2 = {
    
    
        demo (){
    
    
            return 'world';
        }
    }

上述两个对象里面的demo是都是函数,较短的语法是首选,这两种方式在继承上面遇着细微的差别

Symbol类型

对象的属性键只能是字符串类型或者Symbol类型
可以用Symbol()来创建Symbol值,Symbol值不会自动转换为字符串类型,括号内称为Symbol的描述,Symbol一定是唯一的,哪怕描述一样,但值不同

他的description属性,只展示括号内的描述内容

隐藏属性

允许创建对象的隐藏属性,代码的其他部分不能意外访问或重写这些属性

    let age = Symbol('age');
    let user = {
    
    
        name : 'li',
        [age] : 18
    }
    // user[age] = 18;

    alert(user[age]);//18

以上两种方法都可以创建对象的隐藏属性

对象字面量里面的[age] : 18是将age作为键,而不是字符串

Symbol在for…in里面会被跳过

const returnedTarget = Object.assign(target, source);assign方法也会将原对象的Symbol复制过去

该属性将受到保护,防止被意外使用或重写。

但是这种隐藏不是绝对的,Object.getOwnPropertySymbols(obj) 允许我们获取所有的Symbol。Reflect.ownKeys(obj) 的方法可以返回一个对象的所有键,包括Symbol。

全局Symbol

如果需要让相同描述的Symbol具有相同的属性,就要用到全局Symbol全局注册表,使用Symbol.for(key)方法,只要使用这个方法创建且key相同,那么他们所指代的就是同一个Symbol,此时的Symbol是绝对等于的

Symbol.keyFor()方法是恰好和上面的方法是反过来的,根据变量名查看他的描述,不过这个只能在全局Symbol中使用,因为上面方法创建出来的就是全局Symbol

不过description属性是所有Symbol都具有的属性

所以非全局symbol也可以用description找到自己的键
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_50948265/article/details/118686170