JavaScript王者归来05

JavaScript中,要销毁一个对象.必须消除一个对象所有的外部引用.

JavaScript的存储单元回收机制采用的是引用计数法.具体来说就是当一个对象被创建.引用被存储在变量中.引用计数就为1.对该引用的各类操作会改变计数的值.当引用计数为0时.才会被销毁.所以,要即时销毁一个对象.直接的方法是将所有关于这个对象的引用都消除.
这里写图片描述

另外,需要特别注意,JavaScript的delete运算符和对象的销毁并没有直接的关系.delete也不是运算符的反操作.

JavaScript中的内置对象
JavaScript核心提供了丰富的内置对象
Math对象是一个静态对象.
如果Math静态方法出现数值计算错误,返回值为NaN.其他情况下.返回值为数值类型的计算结果.

Date对象
Date对象是JavaScript中用来表示日期和时间的数据类型.
第一种:缺省参数
var now=new Date;//省略了()
第二种
var d=new Date(1991,1,2)
以这种方式构造日期时应当注意.JavaScript中月份是从0开始计算的.所以构造出来的日期时2月2日
第三种
通过一个表示日期的字符串
car d=new Date(‘1991/01/01 12:00:01’);
注意,表示的是1月
第四种
不太常用的方法.通过一个整数参数来构造日期.这个整数代表的是距离
var todayDate=new Date();
得到当时的时间
var date=todayDate.getDate();
获取月份
var month=todayDate.getMonth()+1; //从0开始
获取日期
getDay() (这里可能记录有问题 )

Error对象
JavaScript的Error对象是用来在异常处理中保存异常信息.Error对象包含的属性有message及name.还有toString()方法

数组及数组元素
数组的构造
第一种方式是无参调用
var a=new Array();
创建的是一个没有元素的空数组
第二种方式是通过传递参数明确指定数组前N个元素的值.
第三种方式是通过传递参数明确指定数组前N个参数的值
var a=new Array(5,4,3,2,1,true)
这种构造方式的每一个参数都代表了一个元素值.可以是任何类型的.给数组赋值时时从元素0开始的.数组的length属性为传递给构造函数的参数个数

通过Array()构造数组的第三种方式是传递给他的一个数值参数.指定数组的长度
var a=new Array(10)
指定里面元素个数.但是每个值都是undefined.
要求数组的唯一参数是一个数值.如果唯一的参数是一个数值单不合法.会抛出异常.

直接调用array(){
retrun Array.apply(this,arguments);
//将传递给函数test()的参数列表转换为数组对象返回
}

数组常量
一般来说,直接用数组常量赋值要比用Array()构造数组的速度更快.
例如var a=[1,2,3];
如果跳过了下标为0的元素.直接设置arr[1],程序会默认将数组的长度设为2.并把调过的arr[0]的值设为undefined

数组对象和方法
查找方法
数组的length属性和数组下标结合.用来便利数组.检索指定元素
需要注意的是数组的length属性既可以读,又可以写.如果给length设置了一个比他当前值小的值.那么数组将会被阶段.这个长度之外的元素都会被抛弃.如果给length设置的值比当前的值大.那么新的,未初始化的元素就会被添加数组末尾.需要注意,delete操作虽然能够删除数组元素.但是不会删除数组的length属性.

添加和删除元素
Array原型的push()和pop()方法将数组看做是一种堆栈类型的数据结构.这种数据结构的特点是后进后出.使用push()方法可以在数组的末尾插入一个或多个元素.而使用pop方法可以一次弹出他们.
var a=new Array();
a.push(1); //插入末尾 数值为1
a.push(2,3,4); //插入2,3,4到末尾. 现在为1,2,3,4
var b=a.pop(); //将数组末尾的值弹出.现在b的值为4.数组的值[1,2,3]

shift和unshift方法是一对堆栈方法.作用于数组的头部
var a=new Array();
a.unshift(1); //在头部插入[1]
a.unshift(2,3,4) //数值一次插入数组头部.现在数组为[2,3,4,1]
var b =a.shift(); // 将数组头部值弹出. 现在b为2.a为[3,4,1]

集合操作极其规范
join() 方法可以把一个数组的所有元素都转换为字符串.然后在把他们连接起来.你可以指定一个选的字符串来分隔结果字符串的元素.如果没有,系统默认使用逗号
var a=[1,2,3];
var s=a.join(); //s值为1,2,3
var ss=a.join(”) //s值为123

join高效的应用是作为字符串缓存(stringBuffer)来用.因为Array的join方法构造字符串的整体效率要高于+运算符来连接字符串.

reverse()方法
颠倒数组元素的顺序.并返回颠倒后的数据.注意,在原数组上执行的操作.
var a=new Array(1,2,3);
a.reverse(); a为[3,2,1]

sort()
在原数组上对数组元素进行排序.可以接受一个参数.这个参数是比较两个元素值的一个闭包.可以缺省,那么将按照默认的规则进行排序.

concat()
concat方法创建并返回一个数组.这个数组包含了调用concat()的原始数组的元素.其后跟随的是concat的参数.如果有些参数是数组.那么将被展开.其元素将添加到返回的数组中..其元素被添加到返回的数组中.但是注意,concat()并不能递归的展开一个元素为数组的数组.
这里写图片描述

将参数列表追到到数组的末尾,可以采用前面提到过的Array()方法转换为Arguments对象为数组.或者利用concat方法的apply形式.

slice()方法
slice方法返回的是指定数组的一个片段.或者说是子数组
两个参数指定了要返回的片段的起止点.返回的数组包含第一个参数指定的元素和从哪个元素开始到第二个参数指定的元素位置的元素.前者是包含,后者不包含.如果缺省,那么返回的数组将包含从起始位置开始到原数组结束处的所有元素.
注意.负数也无妨.数组的slice方法可以当做拷贝函数来使用 var b=a.slice(0);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值