片段 A
var instance = [];
Array.prototype.forEach = function () {var prototyped_version;}
instance.forEach = function () {var property_version};
在代码片段 A 中,如果我向实例变量添加属性instance
,并且不小心覆盖了一个原型方法(在这种情况下forEach
),那么当我执行时实际会调用哪个方法:
instance.forEach()
原型版还是属性版?
我试图弄清楚为什么下划线似乎有复杂的类型检查,特别是这一行:
if (nativeForEach && obj.forEach === nativeForEach) {
为什么不只是:
if (obj.forEach) {
因为obj
已经被证实不是null
or undefined
。