首页 > web前端 > js教程 > 正文

javascript delete 使用示例代码

高洛峰
发布: 2017-01-20 10:52:05
原创
1696人浏览过

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浏览器下 

立即学习Java免费学习笔记(深入)”;

window.flower="monkey"; 
delete flower; //true 
alert(flower) //undefined
登录后复制

  可以看到 delete window的成员时,浏览器表现不一致 
  window是javascript的宿主对象 
  宿主对象可以是javascript执行环境自己定义的 
  在ie6-8浏览器中,不能delete window.flower,浏览器会提示你"对象不支持该操作",也就是不能删除window下成员 
不能删除用函数名申明的函数 

代码小浣熊
代码小浣熊

代码小浣熊是基于商汤大语言模型的软件智能研发助手,覆盖软件需求分析、架构设计、代码编写、软件测试等环节

代码小浣熊 51
查看详情 代码小浣熊
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 使用示例代码相关文章请关注PHP中文网!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号