Javascript 与new关联的构造函数仍然具有返回值
为什么javascript中的内置构造函数返回的是值而不是对象?使用新运算符调用它们,但它们仍然不返回对象。如何创建一个不返回对象的构造函数,如: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
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()
方法(返回用于打印的字符串表示形式),该方法可能与