本文主要是介绍JavaScript对象和方法算术运算或输出之valueOf和toString优先级,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考:http://blog.csdn.net/u012657197/article/details/77574927
http://blog.csdn.net/cct418/article/details/50889987
拼多多笔试题
add(1)(2) // 3
add(1, 2, 3)(10) // 16
add(1)(2)(3)(4)(5) // 15
function add() {var args1 = Array.prototype.slice.call(arguments);var fn = function () {var args2 = Array.prototype.slice.call(arguments);return add.apply(null,args2.concat(args1));};fn.toString = function () {return args1.reduce(function (a, b) {return a * b;});};<!-- fn.valueOf = function () {return args1.reduce(function (a, b) {return a + b;});};-->return fn;
}
var a = `${add(1)(2)}`;
var b = +(add(1)(2));
console.log('a:',a,'b',b);
valueOf的意思是返回最适合该对象类型的原始值,
而toString则是将在该对象类型的原始值以字符串形式返回。
注意:1.最后必须显式调用转换为数值或者string 才能调用重写的方法
直接输出add(1)(2)并未触发显示调用的方法
2.args1为add()的参数,而非toString()方法的参数,它的参数为空。
3.
2.给定一个数组,求数组中数之和为15的数有几对?
这里写代码片
参考:找出数组中两数之和为指定值的所有整数对,http://www.cnblogs.com/hapjin/p/5746659.html
这篇关于JavaScript对象和方法算术运算或输出之valueOf和toString优先级的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!