# 10-27
参考:
进度:🍅*3
# 原子笔记
function makeUser() { return { name: "John", ref: this }; }; let user = makeUser(); alert( user.ref.name ); // Error: Cannot read property 'name' of undefined1
2
3
4
5
6
7
8
9
10作为函数被调用时,
this的值是对于整个函数的,代码段和对象字面量对它都没有影响。在一个函数内部,可以使用
new.target属性来检查它是否被使用new进行调用了。对于常规调用,它为空,对于使用
new的调用,则等于该函数:function User() { alert(new.target); } // 不带 "new": User(); // undefined // 带 "new": new User(); // function User { ... }1
2
3
4
5
6
7
8
9对于构造器而言,带有对象的
return返回该对象,在所有其他情况下返回this。可选链
?.不能用在赋值语句的左侧。Symbol 属性不参与
for..in循环,也会被Object.keys(obj)忽略;而Object.assign会同时复制字符串和 symbol 属性。对象——原始值转换算法:
- 如果存在,调用
obj[Symbol.toPrimitive](hint)。 - 否则
- 如果 hint 是
"string",先尝试obj.toString(),后尝试obj.valueOf()。 - 如果 hint 是
"number"或者"default",先尝试obj.valueOf(),后尝试obj.toString()。
- 如果 hint 是
- 如果存在,调用