JavaScript的子集和扩展

JavaScript的子集和扩展

JavaScript的子集

1.精华

Douglas Crockford的《JavaScript:The Good Parts》,专门介绍了JavaScript中的发扬光大的精华部分。语言子集的目标是简化这门语言,规避掉语言中的怪癖,缺陷部分,最终使编程更轻松,程序更健壮。

子集的安全性

子集的目的:能在一个容器或“沙箱”中更安全地运行不可信任的第三方JavaScript代码。所有能破坏这个沙箱并影响全局执行环境的语言特性和API在这个安全子集中都是禁止的。

为了让JavaScript代码静态地通过安全检查,必须移除一些JavaScript特性:

1.eval()和Function()在任何安全子集都是禁止的。
2.禁止使用this关键字,因为在函数(非严选模式中)可以通过this访问全局对象。而沙箱的目的就是阻止对全局对象的访问。
3.禁止使用with语句,因为with语句增加了检查难度
4.禁止使用某些全局变量。在客户端JavaScript中,浏览器窗口对象可以当做全局对象,但也具有双重身份,因此代码中不能有对象window对象的引用。
5.禁止使用某些属性和方法,以免在沙箱中的代码拥有过多的权限,这些属性和方法包括arguments对象的两个属性caller和callee
6.静态分析可以有效地防止带有点(.)运算符的属性存取表达式去读取特殊属性。但[]来访问属性则处理方法不相同,因为无法对方括号内的字符串表达式进行静态分析。基于这些愿意,安全子集通常禁止使用方括号,除非方括号内是一个数字或字符串直接量。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值