Symbol
symbol是数据类型的一种,已有的数据类型
基本数据类型:
字符串、布尔、数字、null、undefined、symbol、bigInt(大于9007199254740992的数)
引用数据类型:
对象(对象、数组、函数)等
Symbol.for()与Symbol()这两种写法,都会生成新的 Symbol
let sy = Symbol('a')
let sy1 = Symbol('a')
sy === sy1 // false
let s1 = Symbol.for('foo');
let s2 = Symbol.for('foo');
s1 === s2 // true
以上可以看出,Symbol就算是传入相同的key,返回的数也不同。
Symbol.for()传值 会判断传入的值是否存在,如果不存在,才返回一个新的值。
class类
类的初体验
class Obj {
constructor(one, two) {
this.one = one;
this.two = two;
}
hello() {
console.log("hello");
}
}
let obj = new Obj(1,2);
obj.hello();
console.log(obj);
hello
Obj {one: 1, two: 2}
constructor (在实例化的时候),接收实例化时传的值,然后自动执行constructor本身。
类的静态成员
class Obj {
} 或者
function Obj() {
}
Obj.name = "fujin";
let obj = new Obj();
console.log(obj); //空对象,没有被添加上属性
因为name只属于Obj这个类或者构造函数,不属于实例对象,这就是类的静态成员,要是想实例对象可以使用name,可以用Obj.prototype.name= "fujin"
同样,在class中,如果要是使用static关键字,那么久等同于Obj.name = ‘fujin’
class Obj {
static name = 'fujin'
}