SOURCE

console 命令行工具 X clear

                    
>
console
let str = 'string';
let num = 9;
let fn = function () {
    console.log('这里是函数');
}
let obj = {
    name: 'Reus',
    age: 32
};
let arr = ['1', 1, true, function () { }];
let bool = true;
let nul = null;
let unfine = undefined;
let nan = NaN;
let sym = Symbol();

console.log(typeof arr);
console.log(typeof str);
console.log(typeof obj);
console.log(typeof num);
console.log(typeof fn) // function
console.log(typeof bool);
console.log(typeof nul); // object
console.log(typeof unfine); // undefined
console.log(typeof nan); // number
console.log(typeof sym);



/**
 * 对象转基本类型
 * 
 * 对象在转换基本类型时,首先会调用 valueOf 然后调用 toString。
 * 当然你也可以重写 Symbol.toPrimitive ,该方法在转基本类型时调用优先级最高。
 */
let objToBase = {
    valueOf() {
        return 0;
    },
    toString() {
        return '1';
    },
    [Symbol.toPrimitive]() {
        return 2;
    }
}
console.log(1 + objToBase); // 3



/**
 * 四则运算符
 * 
 * 只有当加法运算时,其中一方是字符串类型,就会把另一个也转为字符串类型。
 * 其他运算只要其中一方是数字,那么另一方就转为数字。
 * 并且加法运算会触发三种类型转换:将值转换为原始值,转换为数字,转换为字符串。
 */

console.log(1 + '1'); // '11'
console.log(2 * '2'); // 4
console.log([1, 2] + [2, 1]); // '1,22,1'
console.log(([1, 2].toString())) // '1,2'
console.log(([2, 1].toString())) // '2,1'

// 对于加号需要注意这个表达式 'a' + + 'b'
console.log( 'a' + + 'b' ); // aNaN
// 因为 + 'b' -> NaN
// 你也许在一些代码中看到过 + '1' -> 1
console.log( (+ '1') ); // 1
console.log(typeof (+ '1') ); // number



/**
 * == 操作符
 */

console.log(null == undefined); // true
console.log(NaN == NaN); // false

// 这里来解析一道题目 [] == ![] // -> true ,下面是这个表达式为何为 true 的步骤
// [] 转成 true,然后取反变成 false
// [] == false
// 根据第 8 条得出
// [] == ToNumber(false)
// [] == 0
// 根据第 10 条得出
// ToPrimitive([]) == 0
// [].toString() -> ''
// '' == 0
// 根据第 6 条得出
// 0 == 0 // -> true



/**
 * 比较运算符
 * 如果是对象,就通过 toPrimitive 转换对象
 * 如果是字符串,就通过 unicode 字符索引来比较
 */



/**
 * 原型
 */


<h1>原型图</h1>
<img src="https://camo.githubusercontent.com/b887b2f0a7f51c8d5ce2d42879bb0291c6efff4c0cc3fc81be921e087081f8be/68747470733a2f2f79636b2d313235343236333432322e636f732e61702d7368616e676861692e6d7971636c6f75642e636f6d2f626c6f672f323031392d30362d30312d3033333932352e706e67" alt="">