2024-11-27 日报 Day18

2024-11-27 日报 Day18

Yuyang 前端小白🥬

今日的鸡汤

脆弱的人总是有很多借口,但勇者却从不逃走。

今日学习内容

1、JS红皮书P54-55 第三章:语言基础

今日笔记

1、Symbol.toStringTag: 用来定制对象的toString方法返回的字符串的标签值。
通过 toString()方法获取对象标识时,会检索由 Symbol.toStringTag 指定的实例标识符,默认为”Object”。内置类型已经指定了这个值,但自定义类实例还需要明确定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
let s = new Set(); 
console.log(s); // Set(0) {}
console.log(s.toString()); // [object Set]
console.log(s[Symbol.toStringTag]); // Set
class Foo {}
let foo = new Foo();
console.log(foo); // Foo {}
console.log(foo.toString()); // [object Object]
console.log(foo[Symbol.toStringTag]); // undefined
class Bar {
constructor() {
this[Symbol.toStringTag] = 'Bar';
}
}
let bar = new Bar();
console.log(bar); // Bar {}
console.log(bar.toString()); // [object Bar]
console.log(bar[Symbol.toStringTag]); // Bar

2、Symbol.unscopables: 用来定制对象的with语句行为。这个符号作为一个属性表示“一个对象,其自有属性指定了使用 with 语句时要排除的属性”。这个符号的值是一个对象,其属性名指定了在 with 语句中排除的属性。这个符号的值是一个对象,其属性名指定了在 with 语句中排除的属性。

1
2
3
4
5
6
7
8
9
10
let o = { foo: 'bar' }; 
with (o) {
console.log(foo); // bar
}
o[Symbol.unscopables] = {
foo: true
};
with (o) {
console.log(foo); // ReferenceError
}

3、with 是 JavaScript 中的一个语句,用来扩展一个对象的作用域链,临时将一个对象的属性作为当前作用域的变量使用。with 语句的语法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
with (expression) 
statement
with (object) {
// 在这个块中,可以直接访问 object 的属性
}
let obj = {
a: 1,
b: 2
};

with (obj) {
console.log(a); // 输出 1
console.log(b); // 输出 2
}

expression 是一个对象表达式,statement 是一个语句或一个代码块。with 语句的执行过程如下:

此页目录
2024-11-27 日报 Day18