2013-03-20 74 views
1

我正在学习JavaScript,并且在代码库中发现if语句的哪一部分是多余的。否toString方法

if(undefined === value || null === value || !value.toString) 

有东西在JS toString定义(除了undefinednull)不具备?

+1

我不知道任何没有'toString'方法('Object.prototype')的东西,但我可以轻松地做出一些事情。说,'{toString:null}'。 – 2013-03-20 11:21:37

回答

1

如果码的目标是检查值变量具有限定然后很奇怪,因为这将评估为假的唯一情况是,如果值是不确定的toString方法。

我冒昧地为你创建(http://jsfiddle.net/gnrcc/2/)用下面的代码小提琴:

var obj = new String("Hi, im an object"); // String object 
var str = "Hello, im a primitive" // string primitive 
var und; // undefined 

// will output native method, string and object details 
console.log(obj.toString, obj.toString(), obj); 
// will output native method, string and string 
console.log(str.toString, str.toString(), str); 
// will get property undefined error 
console.log(und.toString, und.toString(), und); 
  • 所有对象都有toString方法(从Object原型)
  • 所有原始数据将得到通过theyr对应的对象自动换当方法被调用它们,导致相同的行为对象(编辑:异常是明显的未定义原语)