在javascript中,我们偶然辰要行使delete删除工具。可是,对付delete的一些细节我们未必尽知。昨天,看到kangax说明delete的文章,获益匪浅。本文将文章的英华部门翻译出来,与列位分享。
- 道理
- 代码范例
- 执行上下文
- 激活工具/可变工具
- 属性特征
- 内置工具和DontDelete
- 未声明的赋值
- Firebug 狐疑
- 通过eval删除变量
- 赏识器兼容性
- Gecko DontDelete bug
- IE bugs
- 误区
- ‘delete’和宿主工具
- ES5严酷模式
- 总结
道理
为什么我们能删除一个工具的属性?
var o = { x: 1 };
delete o.x; // true
o.x; // undefined
可是,像这样声明的变量则不可:
var x = 1;
delete x; // false
x; // 1
可能云云声明的函数:
function x(){}
delete x; // false
typeof x; // "function"
留意,当一个属性不能被删除时,delete 只返回false。
要领略这一点,我们起首必要把握像变量实例化和属性特征这样的观念--遗憾的是这些在关于javascript的书中很少讲到。我将在接下来的几个段落中试着简明的重温这些观念。 领略它们一点也不难,假如你不在乎它们为什么这么运行,你可以随意的跳过这一章。
代码范例
在ECMAScript中有三种范例的可执行代码:全局代码(Global code)、函数代码(Function code)和Eval code。这些范例有那么点自我描写,但这里照旧作一个简短的概述:
- 当一段源代码正文被视为措施时,它在全局浸染域中执行,被当玉成局代码(Global code)。在一个赏识器情形中,SCRIPT元素中的内容凡是被看成措施来理会,因此,它被看成全局代码来评估。
- 在一个函数内部直接执行的任何代码,很明明被看成函数代码(Function code)。在赏识器红中变乱属性的内容(如:
<p onclick="..."> )凡是被看成函数代码(Function code)来理会;
- 最后,提供应内置函数eval()的文本被看成Eval 代码(Eval code)来理会。我们很快会看到这种范例很非凡。
(编辑:河北网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|