JS中的Number和new Number ,Date()和new Date()区别

今天认真看了下JS的一些对象,有一个疑问。

var num=Number(10);
undefined
num.toString(8);
"12"
num.valueOf();
10
var num1=new Number(10);
undefined
num1.toString(8);
"12"
num1.valueOf();
10

当我同样的方法使用Date()的时候

var date=Date();
undefined
Date.getMonth();
VM1166:2 Uncaught TypeError: Date.getMonth is not a function(…)(anonymous function) @ VM1166:2InjectedScript._evaluateOn @ VM976:904InjectedScript._evaluateAndWrap @ VM976:837InjectedScript.evaluate @ VM976:693
var date1=new Date();
undefined
date1.getMonth();
1
date
"Wed Feb 03 2016 17:43:09 GMT+0800 (中国标准时间)"

直接创建Date()没法使用getMonth()等方法,而new之后可以,说明getMonth()是属于对象的方法了。
那Number那又是什么,为何函数和对象使用方法一样,结果也一样,实际运用中怎么区分呢

阅读 6.6k
3 个回答

clipboard.png

一个是静态方法,一个是实例的方法

虽然已经有采纳的答案,我觉得这是一个题目,顺手做了一个实验。

function MyNumber() {
    var args = [].slice.call(arguments);
    //console.log(args);
    this.args = args;
    return args.toString();
}

MyNumber.prototype.toString = function() {
    return this.args.toString();
}
var m = MyNumber(1,2,3);
console.log(typeof m);    //string
console.log(m);           //1,2,3
var o = new MyNumber(1,2,3);
console.log(typeof o);   //object
console.log(o);          //MyNumber {args: Array[3]}
console.log(o.toString()); //1,2,3
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏