我们访问 obj2 的 __proto__ 并将其设置为 obj 。 这会将通过 Object.prototype 可访问的 obj 的所有属性复制到 obj2 。 这就是为什么我们可以在 obj2 上调用方法而不会在没有定义的情况下得到错误的原因。
obj2 继承了 obj 的属性,因此 method 方法属性将在其属性中可用。
原型可用于对象,例如对象常量、对象、数组、函数、日期、RegEx、数字、布尔值、字符串。
十一、一元运算符 +
一元 + 运算符将其操作数转换为数字类型。
+"23" // 23 +{} // NaN +null // 0 +undefined // NaN +{ valueOf: () => 67 } // 67 +"nnamdi45" // NaN
当我们希望将变量快速转换为 Number 时,这非常方便。
十二、一元运算符 -
一元运算符 - 将其操作数转换为 Number 类型,然后取反。
该运算符将一元 + 运算符的结果取反。 首先,它将操作数转换为其 Number 值,然后取反该值。
-"23" // -23
此处发生的是,字符串 "23" 将转换为其数字类型,从而得到 23 。然后,此正数将转换为其负数形式 -23 。
-{} // NaN -null // -0 -undefined // NaN -{ valueOf: () => 67 } // -67 -"nnamdi45" // NaN
如果转换为数值的结果为 NaN ,则不会应用取反。
取负 +0 产生 -0 ,取负 -0 产生 +0 。
- +0 // -0 - -0 // 0
十三、指数运算符 **
该运算符用于指定数字的指数。
在数学中, 2^3^ 意味着将 2 乘以三次:
2 * 2 * 2
我们可以使用 ** 运算符在 JS 中进行相同的操作:
2 ** 3 // 8 9 ** 3 // 729