当我使用call()
或apply()
时,出现问题。String.prototype.replace === String.replace
console.log(String.prototype.replace === String.replace);//false
我觉得String.replace
应与String.prototype.replace
平等的,因为它们是同一个对象。
然而,它们彼此不同。
当我运行下面的代码会发生什么:
var s = "a b c";
String.replace.call(s,'a','A');//return "a"
为什么没有这个代码抛出一个错误,但返回一个值?
问题是..? –
在原型内部显然有一些增强,只是因为它通常会返回相同的结果... – Tules
'String.replace.call(s,'a','A');'抛出一个错误,因为它不是一个函数。如果不用'()'执行'String.replace',会发生什么?你获得什么代码? – pimvdb