-
eval
它的功能是把对应的字符串解析成JS代码并运行;应该避免使用eval
,不安全,非常耗性能(2次,一次解析成js语句,一次执行)。
-
window对象 VS document对象
window
对象代表浏览器中打开的一个窗口。document
对象代表整个html文档。实际上,document
对象是window
对象的一个属性。
-
use strict
除了正常模式运行外,ECMAscript添加了第二种运行模式:“严格模式”。
- 消除js不合理,不严谨地方,减少怪异行为
- 消除代码运行的不安全之处
- 提高编译器的效率,增加运行速度
- 为未来的js新版本做铺垫
-
如何判断一个对象是否属于某个类
使用instanceof
即if(a instanceof Person){alert('yes');}
-
对象的 prototype(原型)
原型就是对象的蓝图。如果它存在当前对象中,则将其用作属性和方法的回退。它是在对象之间共享属性和功能的方法,这也是JavaScript实现继承的核心。
-
如何在执行对象查找时,不去查找原型
Object.hasOwnProperty(proName)
:是用来判断一个对象是否有你给出名称的属性。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。
-
JSON(JavaScript Object Notation)
JSON中对象通过“{}”
来标识,一个“{}”
代表一个对象,如{“AreaId”:”123”}
。
JSON是JS的一个严格的子集,一种轻量级的数据交换格式,类似于xml。数据格式简单,易于读写,占用带宽小。
JSON.parse(str)
---- 解析JSON字符串 把JSON字符串变成JavaScript值或对象
JSON.stringify(obj)
--- 将一个JavaScript值(对象或者数组)转换为一个 JSON字符串
eval('('+json+')')
--- 用eval方法注意加括号 而且这种方式更容易被攻击
-
JS延迟加载
JS的延迟加载有助与提高页面的加载速度。
-
defe
r和async
defer:延迟脚本。立即下载,但延迟执行(延迟到整个页面都解析完毕后再运行),按照脚本出现的先后顺序执行。
async:异步脚本。下载完立即执行,但不保证按照脚本出现的先后顺序执行。 - 动态创建DOM方式(用得最多)
- 按需异步载入JS
- 垃圾回收机制
标记清除:
这个算法把“对象是否不再需要”简化定义为“对象是否可以获得”。
这个算法假定设置一个叫做根(root)的对象(在Javascript里,根是全局对象)。定期的,垃圾回收器将从根开始,找所有从根开始引用的对象,然后找这些对象引用的对象。从根开始,垃圾回收器将找到所有可以获得的对象和所有不能获得的对象。引用计数:
这是最简单的垃圾收集算法。此算法把“对象是否不再需要”简化定义为“对象有没有其他对象引用到它”。如果没有引用指向该对象(零引用),对象将被垃圾回收机制回收。
该算法有个限制:无法处理循环引用。两个对象被创建,并互相引用,形成了一个循环。它们被调用之后不会离开函数作用域,所以它们已经没有用了,可以被回收了。然而,引用计数算法考虑到它们互相都有至少一次引用,所以它们不会被回收。
- 删除cookie
// 将cookie的失效时间设置为过去的时间(expires)
document.cookie = ‘user=’+ encodeURIComponent(‘name’) + ';
expires=’+ new Date(0);