- 优先级
运算符的优先级决定了表达式中运算执行的先后顺序,优先级高的运算符最先被执行
- 结合性
结合性决定了拥有相同优先级的运算符的执行顺序
- 汇总表
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
- 属性运算符 . 和 []
- object.property
property 必须是有效js标识符 不能以数字开头
如果对数字字面量使用方法,并且数字文字没有指数且没有小数点,请在方法调用之前的点之前留出空格,以防止点被解释为小数点
77 .toExponential();
// or
77
.toExponential();
// or
(77).toExponential();
// or
77..toExponential();
// or
77.0.toExponential();
// because 77. === 77.0, no ambiguity
- [key] 如果key 不是字符串 会强转成字符串
var foo = {unique_prop: 1}, bar = {unique_prop: 2}, object = {};
object[foo] = 'value';
console.log(object[bar]===object[foo]);//true
- new 运算符
当代码 new Foo(...) 执行时:
1. 一个新对象被创建。它继承自Foo.prototype。
2. 使用指定的参数调用构造函数Foo,并将 this绑定到新创建的对象。
3. new Foo 等同于 new Foo(),只能用在Foo 不传递任何参数的情况。
4. 如果构造函数返回了一个“对象”(返回其他类型无效),那么这个对象会取代整个new出来的结果。
如果构造函数没有返回对象,那么new出来的结果为步骤1创建的对象。
(一般情况下构造函数不返回任何值,不过用户如果想覆盖这个返回值,可以自己选择返回一个普通对象来覆盖。当然,返回数组也会覆盖,因为数组也是对象。)