繁体   English   中英

覆盖valueOf方法会导致console.log(+ [])出现差异?

[英]Override valueOf method cause diffrence on console.log(+[])?

阅读《权威指南》时 在此处输入图片说明

所以我想检查一下它是否能像这样运作

在我重写方法console.log(+[]) //0

但是之后

var proto = [].__proto__.__proto__
var valueOf = proto.valueOf
proto.valueOf = function(){
debugger;
valueOf.apply(this,arguments);
}
console.log(+[])  //NaN

谁能告诉我我的错在哪里?

您忘记了return包装函数的结果。

proto.valueOf = function(){
    debugger;
    return valueOf.apply(this,arguments);
//  ^^^^^^
};

顺便说一句,您应该真正避免覆盖Object.prototype.valueOf 只需使用自己的方法提供要测试的对象即可。

添加一个return语句:

var proto = [].__proto__.__proto__
var valueOf = proto.valueOf
proto.valueOf = function(){
  debugger;
  // You have to add a return statement here.
  return valueOf.apply(this,arguments);
}

是的,重写Object__proto__并不是一个好主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM