日期:2014-05-16 浏览次数:20408 次
资料来源:http://bonsaiden.github.com/JavaScript-Garden/zh/
?
??? 为了判断一个对象 是否包含自定义属性而不是原型链上的属性,我们需要使用继承自Object.prototype的hasOwnProperty方法。
?
??? 在chrome控制台中测试如下:
?
在for (var key in obj){ } 中, key包含了obj继承下来的所有原型链的内容,hasOwnProperty只表示当前对象的原型链属性,可用于过滤父对象的原型链方法
在chrome中可以看到,若Object对象中包含了一个属性show,则在obj对象中for (var key in obj)也同样打出来了:
?
在JavaScript中,typeof 只用于判断对象是否已定义,或者是否已经赋值:
?
instanceof只有在比较自定义对象时才有意义,内置对象String, Number等,与 typeof 一致
?
undefined 是 一个值为undefined的类型
而 null 表示的是一个对象,该对象为空对象
?
返回undefined的情况:
1.访问未修改的全局变量 undefined
2.没有定义 return 表达式的函数隐式返回
3.return 表达式没有显式的返回任何内容
4.访问不存在的属性
5.函数参数没有被显式传递值
6.任何被设置为 undefined 值的变量
?
setTimeout和setInterval的一个区别是setInterval在javascript执行有阻塞时,仍然会组织回调函数堆积起来,在下一个时间执行。
?
处理可能阻塞的情况:
function foo(){ // 阻塞执行 1 分钟 setTimeout(foo, 1000); } foo();
阻止了setInterval的调用指令堆积,拥有更多的控制。
怪不得看到很多执行的都是用setTimeout,原来是有这个原因。
?
里面有一个结论是,绝对不要使用字符串作为 setTimeout 或者 setInterval 的第一个参数,这么写的代码明显质量很差。
呀哦,之前就是直接传弟一个函数名进去的。不知道属于不属于这种情况。