JavaScript Standard built-in objects
Published by powerfulyang on Feb 16, 2023
JavaScript 内置对象
显示函数的调用栈,即上层函数。
fun.caller === arguments.callee.caller
arguments.callee 代表的是正在执行的fun
The caller
accessor property of Function
instances represents the function that invoked this function. For strict, arrow, async, and generator functions, accessing the caller
property throws a TypeError
.
关于 this 的一个问题
1let obj, method;
2
3obj = {
4 go: function() { console.log(this); }
5};
6
7obj.go(); // (1) this obj
8
9(obj.go)(); // (2) this obj
10
11(method = obj.go)(); // (3) dom 环境是 window,node 环境 global
12
13(obj.go || obj.stop)(); // (4) dom 环境是 window,node 环境 global
String
关于 surrogate pair,比如:😊。
1// charCodeAt 不会考虑 surrogate pair,所以返回了 𝒳 前半部分的编码:
2
3alert( '𝒳'.charCodeAt(0).toString(16) ); // d835
4
5// codePointAt 可以正确处理 surrogate pair
6alert( '𝒳'.codePointAt(0).toString(16) ); // 1d4b3
Unicode Decomposition, 变音符号
1let s1 = 'S\u0307\u0323'; // Ṩ, S + 上方点符号 + 下方点符号
2let s2 = 'S\u0323\u0307'; // Ṩ, S + 下方点符号 + 上方点符号
3
4alert( `s1: ${s1}, s2: ${s2}` );
5
6alert( s1 == s2 ); // 尽管这两个字符在我们看来是相通的,但结果却是 false
7
8// 使用 normalize 方法来处理这些
9
10alert( "S\u0307\u0323".normalize().length ); // 1
11
12alert( "S\u0307\u0323".normalize() == "\u1e68" ); // true