JavaScript常用函数及区别

资料来源:[url=http://bonsaiden.github.com/JavaScript-Garden/zh/]http://bonsaiden.github.com/JavaScript-Garden/zh/[/url]

[size=large][b]1.hasOwnProperty函数[/b][/size]

为了判断一个对象是否包含自定义属性而不是原型链上的属性,我们需要使用继承自Object.prototype的hasOwnProperty方法。

[img]http://dl.iteye.com/upload/attachment/0068/9528/1b78a64a-7f60-3240-91f5-37e2239fb883.png[/img]
for (var key in obj){ }, key包含了obj继承下来的所有原型链的内容,hasOwnProperty只表示当前对象的原型链属性,可用于过滤父对象的原型链方法。

在chrome中可以看到,若Object对象中包含属性show,则 obj 对象for (var key in obj)也同样打出来了:
[img]http://dl.iteye.com/upload/attachment/0068/9544/704650b7-4c9b-308e-9dd4-d0067c1d3822.png[/img]

[size=large][b]2.typeof 与 instanceof[/b][/size]

在JavaScript中,typeof 只用于判断对象是否已定义,或者是否已经赋值:

[img]http://dl.iteye.com/upload/attachment/0068/9556/483b0634-abbf-38ec-b9a7-649f805b28fe.png[/img]

instanceof只有在比较自定义对象时才有意义,内置对象String, Number等,与 typeof 一致

[size=large][b]3.undefined 和 null[/b][/size]

undefined 是 一个值为undefined的类型

而 null 表示的是一个对象,该对象为空对象

返回undefined的情况:
[list]
[*]1.访问未修改的全局变量 undefined
[*]2.没有定义 return 表达式的函数隐式返回
[*]3.return 表达式没有显式的返回任何内容
[*]4.访问不存在的属性
[*]5.函数参数没有被显式传递值
[*]6.任何被设置为 undefined 值的变量
[/list]
[size=large][b]4.setTimeout 和 setInterval[/b][/size]

setTimeout和setInterval的一个区别是setInterval在javascript执行有阻塞时,仍然会组织回调函数堆积起来,在下一个时间执行。

处理可能阻塞的情况:

function foo(){
// 阻塞执行 1 分钟
setTimeout(foo, 1000);
}
foo();

阻止了setInterval的调用指令堆积,拥有更多的控制。

怪不得看到很多执行的都是用setTimeout,原来是有这个原因。

里面有一个结论是,绝对不要使用字符串作为 setTimeout 或者 setInterval 的第一个参数,这么写的代码明显质量很差。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值