var sj=Date();
document.write(sj.getHours());
var str="大家好!"
document.write(str.replace("好", "不好"));
大家好,第一个就不行,第二个就行?
请问为什么 date 对象必须加 new;
而string 对象为什么不用加 new?
我刚学 JavaScript ,所以这可是个 解剖麻雀 的问题,有利于我理解 JavaScript ;
谢谢了!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
javascript引用类型的值是一个实例或者说对象,它是通过new + 构造函数创建。常见的引用类型包括Object、Array、Function、String、Number、Boolean、Date等。在创建实例时我们都可以使用如下方式
var obj = new Object();
var arr = new Array();
//甚至
var fn = new Function('val', 'return val');
但有更简洁,并且更友好的方式来创建这些类型的实例叫字面量表示法如下
var obj = {};
var arr = [];
var fn = functon (val) {
return val;
}
同时String、Number、Boolean属于特殊的引用类型,我们叫它基本包装类型。我们平时都是使用字面量来表示它们而很少用new方式:
var str = '';
var num = 0;
var boo = false;
但是我们为什么可以使用类似str.slice()呢? 要知道要是一个对象实例才有其对应的方法。
var str = 'text';
var subStr = str.substring(2);
/*原因在于在第二行代码访问时,访问过程处于一种读取模式,后台会自动完成以下处理。
1.创建String对象实例
2.实例中调用指定方法
3.销毁这个实例*/
var str = new String('text');
var subStr = str .substring(2);
str = null;
引用类型与基本包装类型主要区别在于对象的生存期,使用new创建的对象会在执行流离开当前作用域之前一直保存在内存中,而自动创建的基本包装类型对象只存在于一行代码的执行瞬间,然后立即被销毁。