Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与new关联的构造函数仍然具有返回值_Javascript_Constructor - Fatal编程技术网

Javascript 与new关联的构造函数仍然具有返回值

Javascript 与new关联的构造函数仍然具有返回值,javascript,constructor,Javascript,Constructor,为什么javascript中的内置构造函数返回的是值而不是对象?使用新运算符调用它们,但它们仍然不返回对象。如何创建一个不返回对象的构造函数,如: new Number() //returns 0 instead of [Object object] new String() //returns "" new Date() //returns today's date function SomeConstructor() { ret

为什么javascript中的内置构造函数返回的是值而不是对象?使用新运算符调用它们,但它们仍然不返回对象。如何创建一个不返回对象的构造函数,如:

      new Number() //returns 0 instead of [Object object]
      new String() //returns "" 
      new Date() //returns today's date

      function SomeConstructor() {
      return "Value"
      }
      new SomeConstructor() // [Object object]
      SomeConstructor() // returns "Value"

如何创建这样的构造函数?

它们确实是对象,您可以使用
typeof
进行检查

要获取子类型,可以使用
Object.prototype.toString

正如@Michael Ritter指出的:

它只是不作为[Object]打印,因为它们实现了 toString()方法(返回用于 (印刷)

console.log(typeof new Number())//对象
console.log(typeof new String())//对象
console.log(typeof new Date())//对象
console.log(Object.prototype.toString.call(new Number())//[Object Number]
console.log(Object.prototype.toString.call(new String())//[Object String]

console.log(Object.prototype.toString.call(new Date())/[Object Date]
您可能希望在JS原语上探索这些内容:它们确实返回了一个对象。它不是以
[Object Object]
的形式打印,因为它们实现了
toString()
方法(返回用于打印的字符串表示形式),该方法可能与