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学习笔记4 Eval函数
Jan 11 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
Apr 26 Javascript
jquery实现的网页自动播放声音
Apr 30 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
Dec 10 Javascript
js实现延迟加载的方法
Jun 24 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
Oct 08 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
Jan 04 Javascript
微信小程序中button组件的边框设置的实例详解
Sep 27 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
Apr 04 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
Oct 29 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
Nov 12 Javascript
详解JavaScript作用域 闭包
Jul 29 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
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
php DOS攻击实现代码(附如何防范)
2012/05/29 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
Javascript Select操作大集合
2009/05/26 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
jquery延迟对象解析
2016/10/26 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
Angular.js 4.x中表单Template-Driven Forms详解
2017/04/25 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
微信小程序云开发如何使用云函数生成二维码
2019/05/18 Javascript
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
python 把数据 json格式输出的实例代码
2016/10/31 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
python cv2.resize函数high和width注意事项说明
2020/07/05 Python
python 基于opencv操作摄像头
2020/12/24 Python
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
什么时候用assert
2015/05/08 面试题
介绍一下Java中的static关键字
2012/05/12 面试题
土木工程师职业规划范文
2014/03/07 职场文书
理财计划书
2014/08/14 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
学雷锋活动简报
2015/07/20 职场文书
初中班主任培训心得体会
2016/01/07 职场文书