一.String()/toString()/''+
(1).String
1.tostring 会报错
(1).tostring()可以
步骤String(引用类型)
先去找自身原型上的tostring()
找不到就去Object的原型上找toString()
如果tostring()返回的是引用类型则会调用valueof
toString({}) = [object Object]
{}是由object构造而成,所以直接在调用Object原型上的toString 所以是object Object
函数体
function a(){}
console.log(String(a));
console.log(a.toString());
去找的Function.prototype
返回 function a(){}
因为函数体默认返回本身所以打印出整个函数体
(2).Number
步骤Number(引用类型)
先去找valueof().
再去找tostring()
找不到就去Object的原型上找toString()
进制
Numer()可以识别二进制 十六进制
Number(0101)
数字转换
Number('123') = 123
Number(' 123') = 123
Number('.123') = 0.123
Number('abc') = NaN
Number('123abc') = NAN
Number('1 2') = NAN
parseInt('-123ab') = -123
parseInt(123ab) =123
可以看到Number对于有其他元素干扰的数字处理截取的不是很好而parseInt正好弥补了
parseInt
除了对数字转换截取有了更好的支持外,还增强了进制的转换
parseInt('11',2); 其中第二个参数的范围是2-36 null/un/0都被视为10进制默认进制
(3).Boolean
除了 un null nan '' +0 -0 0 false document.all() 以外全是true
二.特殊运算符
var a = '123';
log(~~a);
log(a & 1);
log(a | 1);
log(a ^ 1)
log(a << 1)
log(a >> 1)
log(a >>> 1)