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 相关文章推荐
JSDoc 介绍使用规范JsDoc的使用介绍
Feb 12 Javascript
改进版通过Json对象实现深复制的方法
Oct 24 Javascript
js 操作符汇总
Nov 08 Javascript
javascript实现类似java中getClass()得到对象类名的方法
Jul 27 Javascript
jQuery使用$.ajax进行即时验证的方法
Dec 08 Javascript
Vue.js每天必学之Class与样式绑定
Sep 05 Javascript
JS中使用正则表达式g模式和非g模式的区别
Apr 01 Javascript
vue router仿天猫底部导航栏功能
Oct 18 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
Nov 07 Javascript
一个简单的node.js界面实现方法
Jun 01 Javascript
VUE-cli3使用 svg-sprite-loader
Oct 20 Javascript
javaScript把其它类型转换为Number类型
Oct 13 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
在PHP中利用XML技术构造远程服务(上)
2006/10/09 PHP
谈谈关于php的优点与缺点
2013/04/11 PHP
使用PHP静态变量当缓存的方法
2013/11/13 PHP
解决php表单重复提交实现方法
2015/09/29 PHP
php进程间通讯实例分析
2016/07/11 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
Node.js实现发送邮件功能
2017/11/06 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
Python实现二分法算法实例
2015/02/02 Python
python妹子图简单爬虫实例
2015/07/07 Python
Python实现获取磁盘剩余空间的2种方法
2017/06/07 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
关于python3.9安装wordcloud出错的问题及解决办法
2020/11/02 Python
html5 标签
2009/07/16 HTML / CSS
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
2014年安全生产大检查方案
2014/05/13 职场文书
党政领导班子群众路线对照检查材料思想汇报
2014/09/27 职场文书
2014年城管工作总结
2014/11/20 职场文书
转正申请报告格式
2015/05/15 职场文书
公司档案管理制度
2015/08/05 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书