(5).add(3).minus(2) 使其结果为6
~function(){}() 与 (function(){})() 一样的 都是立即执行函数的意思
~(function() {
// 每一个方法执行完后都要返回这个Number类的实例,
//这样才能继续调用Number原型上的方法(链式写法)
function check(n) {
// 转换为数字
//Number() -- 强制转换整个参数;parseInt()/parseFloat() -- 专门将字符串转换为数值
n = Number(n);
// isNaN(n)检查是否是"非数值"
// n可以是任何类型,该方法在接受数值后,首先尝试转换为数值,再检测是否为非数值
return isNaN(n) ? 0 : n;
// return isNaN(n) ? 0 : Number(n);
}
function add(n) {
n = check(n);
// this 就是调用add这个函数的本身 就是5
return this + n;
}
function minus(n) {
n = check(n);
// this -= n 相当于 this = this - n
// this只能通过call或applay改变this指向 this不能像表达式一样被赋值 所以不能这样用
return this - n;
}
Number.prototype.add = add;
Number.prototype.minus = minus;
/* ["add", "minus"].forEach(item => {
//JavaScript eval(String) 函数 string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。
Number.prototype[item] = eval(item);
}); */
})();
console.log((5).add(3).minus(2))