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 相关文章推荐
javascript实现面向对象类的功能书写技巧
Mar 07 Javascript
JS实现日期加减的方法
Nov 29 Javascript
jquery解析xml字符串示例分享
Mar 25 Javascript
js实现点击图片改变页面背景图的方法
Feb 28 Javascript
全面解析Bootstrap排版使用方法(标题)
Nov 30 Javascript
用NODE.JS中的流编写工具是要注意的事项
Mar 01 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
Jul 12 Javascript
详解node nvm进行node多版本管理
Oct 21 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
Jul 06 Javascript
js实现文件上传功能 后台使用MultipartFile
Sep 08 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
Jul 19 Javascript
JavaScript 中for/of,for/in 的详细介绍
Nov 17 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 创建标签云函数代码
2010/05/26 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
老生常谈PHP位运算的用途
2017/03/12 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
jQuery替换字符串(实例代码)
2013/11/13 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
c++生成dll使用python调用dll的方法
2014/01/20 Python
批处理与python代码混合编程的方法
2016/05/19 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
请解释在new与override的区别
2012/10/29 面试题
给酒店员工的表扬信
2014/01/11 职场文书
幼儿园老师寄语
2014/04/03 职场文书
模范教师材料大全
2014/12/16 职场文书
个人政治思想总结
2015/03/05 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
Nginx下配置Https证书详细过程
2021/04/01 Servers
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python
Java tomcat手动配置servlet详解
2021/11/27 Java/Android
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js