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 相关文章推荐
xml转json的js代码
Aug 28 Javascript
js中for in语句的用法讲解
Apr 24 Javascript
JavaScript实现相册弹窗功能(zepto.js)
Jun 21 Javascript
jQuery实现链接的title快速出现的方法
Feb 20 Javascript
vue-axios使用详解
May 10 Javascript
js如何获取网页所有图片
May 12 Javascript
浅谈FastClick 填坑及源码解析
Mar 02 Javascript
vue+vuex+axios实现登录、注册页权限拦截
Mar 09 Javascript
Vue页面骨架屏的实现方法
May 22 Javascript
vue 实现axios拦截、页面跳转和token 验证
Jul 17 Javascript
详解可以用在VS Code中的正则表达式小技巧
May 14 Javascript
vue prop传值类型检验方式
Jul 30 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
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
JS运动改变单物体透明度的方法分析
2018/01/23 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
详解Python中用于计算指数的exp()方法
2015/05/14 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
django 常用orm操作详解
2017/09/13 Python
python的unittest测试类代码实例
2017/12/07 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
商务英语专业自荐信
2013/10/14 职场文书
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
护理专业优质毕业生自荐书
2014/01/31 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书