function addMethod (obj, name, fn) {
var old = obj[name];
obj[name] = function () {
// fn.length指函数fn在定义时,形参的个数。
if (fn.length === arguments.length) {
return fn.apply(this, arguments)
} else if (typeof old === 'function') {
return old.apply(this, arguments)
}
}
}
var person = {userName: 'bear鲍的小小熊'}
addMethod(person, 'show', function () {
console.log(this.userName + '---->' + 'show1')
})
addMethod(person, 'show', function (str) {
console.log(this.userName + '---->' + str)
})
addMethod(person, 'show', function (a, b) {
console.log(this.userName + '---->' + (a + b))
})
person.show()
person.show('bkl')
person.show(10, 20)
输出的结果:
//bear鲍的小小熊---->show1
//bear鲍的小小熊---->bkl
//bear鲍的小小熊---->30