javascript delete 使用示例代码


Posted in Javascript onMarch 29, 2010

javascript delete example

var flower={}; 
flower.name="oop"; 
delete flower.name; //true 
alert(flower.name); //undefined

创建一个名为flower的对象

flower具有成员name,值"oop";

delete 操作 删除这个成员

删除成功,已不存在flower.name这个成员
javascript delete example 2

alert(isNaN(5)); //false 
delete isNaN; //true 
alert(isNaN(5)); //undefined

delete 操作符 甚至可以删除全局对象Global的成员
不能删除 var 申明的变量

var flower="monkey"; 
delete flower; //false 
alert(flower); // "monkey"

用 var 申明的变量,delete 后 返回false.并没有删除成功 变量依然存在;
注意:delete仅在删除一个不能删除的成员是,才会返回false
ie下不能删除宿主对象下的变量在ie浏览器下

window.flower="monkey"; 
delete flower; //抛出异常 
alert(flower);

在ff浏览器下
window.flower="monkey"; 
delete flower; //true 
alert(flower) //undefined

可以看到 delete window的成员时,浏览器表现不一致

window是javascript的宿主对象

宿主对象可以是javascript执行环境自己定义的

在ie6-8浏览器中,不能delete window.flower,浏览器会提示你"对象不支持该操作",也就是不能删除window下成员
不能删除用函数名申明的函数

function flower(){} 
delete flower; //true 
alert(flower);//undefined

结果显示 delete 不能删除 用函数名申明的函数
不能删除继承自原型的成员

function flower(){}; 
flower.prototype.name="monkey"; 
var a1=new flower(); 
a1.name="a1_monkey" 
alert(a1.name);//"a1_monkey" 
delete a1.name;//ture 
alert(a1.name);//"monkey"

a1是flower的实例,通过实例来删除原型的和父类的成员是不可行的~

如果一定要删除该属性("这里以name为例"),只能对原型进行操纵
delete a1.constructor.prototype.name;
DontDelete 特性delete 不能删除具有DontDelete特性的成员
那什么是具有DontDelete特性的成员呢
例如var 申明的变量,函数名申明的函数,Function对象的length等极少数几个拥有DontDelete特性
delete 返回值false or true
delete 仅在删除一个不能删除的成员时,才会返回false
而其他情况下,删除如不存在的成员,或删除成功也都会返回ture
也就是说 返回true 并不一定代表删除成功

如 : 执行代码 alert(delete a); // true
a是一个未申明且不存在的变量。 delete 依然返回的是true
不同浏览器器之间的差异

(function(){ 
delete arguments; // false ,而在Mozilla中返回的是true 
typeof arguments; // "object" 
})();

巧妙的利用eval删除var 申明的变量
eval('var flower = 1'); 
alert(window.flower) //1 
alert(flower)// 1 
delete flower; // true 
alert(flower); // "undefined" 
var a=function(){}; 
eval('var a = function(){}'); 
delete a; // true 
alert(a); // "undefined"

eval后的全局变量,变得不具备DontDelete特性,可以用eval删除;
最后补充一条神奇的~睡觉前刚测试
window.flower=1;
delete flower 时对象会不支持此操作
我们可以用 with(window){flower=1}; 然后 delete flower (记住是delete flower,不是delete window.flower ,ie不允许那么做)
这样 window.flower就被删除了 :)

JavaScript delete操作符应用实例

Javascript 相关文章推荐
JQuery的html(data)方法与<script>脚本块的解决方法
Mar 09 Javascript
不同的jQuery API来处理不同的浏览器事件
Dec 09 Javascript
js中window.open()的所有参数详细解析
Jan 09 Javascript
js与运算符和或运算符的妙用
Feb 14 Javascript
JS使用for循环遍历Table的所有单元格内容
Aug 21 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
Sep 06 Javascript
jquery实现的伪分页效果代码
Oct 29 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
Feb 17 Javascript
原生JS实现瀑布流插件
Feb 06 Javascript
Vue中的基础过渡动画及实现原理解析
Dec 04 Javascript
react同构实践之实现自己的同构模板
Mar 13 Javascript
实用Javascript调试技巧分享(小结)
Jun 18 Javascript
JavaScript 格式字符串的应用
Mar 29 #Javascript
js DataSet数据源处理代码
Mar 29 #Javascript
javascript 节点遍历函数
Mar 28 #Javascript
javascript 类型判断代码分析
Mar 28 #Javascript
js chrome浏览器判断代码
Mar 28 #Javascript
JavaScript 学习笔记一些小技巧
Mar 28 #Javascript
JavaScript 学习笔记二 字符串拼接
Mar 28 #Javascript
You might like
PHP4与PHP3中一个不兼容问题的解决方法
2006/10/09 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
基于laravel缓冲cache的用法详解
2019/10/23 PHP
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
2011/12/20 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
jQuery弹出窗口简单实现代码
2017/03/09 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
jQuery实现的页面详情展开收起功能示例
2018/06/11 jQuery
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
python实现多线程暴力破解登陆路由器功能代码分享
2015/01/04 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
Django REST framework 分页的实现代码
2019/06/19 Python
python简单实现9宫格图片实例
2020/09/03 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
斯凯奇美国官网:SKECHERS美国
2016/08/20 全球购物
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
文员个人的求职信范文
2013/09/26 职场文书
教学实习自我评价
2014/01/28 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
教师校本培训方案
2014/02/26 职场文书
数控机床专业自荐信
2014/05/19 职场文书
保密工作承诺书
2014/08/29 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
2014年教师业务工作总结
2014/12/19 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
初中政治教学反思
2016/02/23 职场文书
golang DNS服务器的简单实现操作
2021/04/30 Golang
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis