valueof toString

时间:2025-01-14 09:33:32

valueof toString

add(1)(2) // 3

add(1, 2, 3)(10) // 16

add(1)(2)(3)(4)(5) // 15

function add() {

var args = Array.prototype.slice.call(arguments);

return function() {

var arg2 = Array.prototype.slice.call(arguments);

return args.concat(arg2).reduce(function(a, b){

return a + b;

});

}

}

add(1)(2) // 3

add(1, 2)(3) // 6

add(1)(2)(3) // Uncaught TypeError: add(...)(...) is not a function(…)

function add () {

var args = Array.prototype.slice.call(arguments);

var fn = function () {

var arg_fn = Array.prototype.slice.call(arguments);

return add.apply(null, args.concat(arg_fn));

}

fn.valueOf = function () {

return args.reduce(function(a, b) {

return a + b;

})

}

return fn;

}

var a = {a : 1}

undefined

a + 1

"[object Object]1"

a = {

toString () {

return '1111'

}

}

Object {}

a + 1

"11111"

var aa = {

toString : function () {

return {}

},

valueOf : function () {

return '+1'

}

}

undefined

aa + 1

"+11"

function xdh () {

}

xdh.valueOf = () => {

console.log("valueof")

return {}

}

xdh.toString = () => {

console.log("toString")

return 'sadasda'

}

() => {

console.log("toString")

return 'sadasda'

}

xdh

VM3052:6 valueof

VM3052:11 toString

sadasda

object 一般情况下 先调用 valueOf 后调用toString