首先,delete删除成功返回true,失败返回false

js代码:

function wxCount ($element) {
this.init($element);
} wxCount.prototype = {
init : function(){...}, //初始化方法
count : function(){...}, //计算方法
destroy : function(){
delete this;
} //删除方法
}

仔细一看便知,这里的this指向的是function wxCount(),而在javascript中,delete是无法删除一般的变量或者function的,永远都会返回false

example:

<script type="text/javascript">
x = 1; // 创建全局属性x
var y = 2; // var声明,y为变量
obj = {
a : 3,
b : 4
}; // 创建全局对象obj,并有a和b两个成员变量 delete x; // returns true delete y; // returns false delete Math.PI; // returns false delete obj.a; // returns true
delete obj.b; // returns true delete obj; // returns true function f() {
var z = 5;
var obj2 = {
c : 6,
d : 7
}
obj3 = {
e : 8
}
delete z; // returns false
delete obj2; // returns false
delete obj2.c; // returns true
delete obj3; // returns true
}
</script>

大多数情况下可以理解为:通过变量或者函数声明的属性不能删除。

1.全局属性可以删除

x = 150;
delete x; //return true function f() {
obj = {
a : 2
}
}
delete obj; //return true

x可以理解为全局对象GLOBAL的一个属性,即GLOBAL.x,可以删除成功。函数中的obj也被置为全局属性,同理。

2.通过var或者function声明的属性不能删除

var x = 150;
delete x; //return fale
function y() {}
delete y; //return false

3.内置的属性不能删除

delete Math.PI //reuturn false
function (param) {
delete param; //return false
console.log(param); //1
}(1);

4.原型上的属性

function People(){}
People.prototype.age = 18;
var Perez = new People();
Perez.age = 100;
console.log(Perez.age); //100
delete Perez.age; //return ture
console.log(Perez.age); //18
//返回成功但是并没有什么用,Perez还是会继承原型上的age属性 delete People.prototype.age;
console.log(Perez.age); //undefined

5.删除数组中元素

var ipr = ["zhong","du","sun","an","yuan"];
delete ipr[4]; //return true
console.log(ipr); //["zhong","du","sun","an"]
console.log(ipr.length); //5
console.log(4 in ipr); //false
console.log(ipr[4]); //undefined

删除数组中元素,数组长度不会发生变化,但是元素实际不存在数组中了。

var ipr = ["zhong","du","sun","an",undefined];
console.log(4 in ipr); //ture

如果将最后个元素置为undefined,实际还是存在数组中。

关于delete更深的问题和兼容性问题,可以参考
深入理解JS的delete

最新文章

  1. java面向对象六原则一法则
  2. C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
  3. NYOJ题目816它合法吗?
  4. SQL索引及视图常用语法
  5. MySql 服务端与客户端下载地址
  6. iscsiadm用法简介
  7. 【HDOJ】1297 Children’s Queue
  8. iOS开发学习记录【整理】
  9. Delphi自定义消息应用及delphi托盘实现
  10. 在不同编程语言中对Unix时间戳进行转换(Unix timestamp)
  11. Mysql的四种分区
  12. pan
  13. 在Java中怎样逐行地写文件?
  14. Python数据类型和变量
  15. 天气类App原型制作分享-ColorfulClouds
  16. Oracle 如何开启归档模式
  17. Windows安装VNC服务端
  18. 通用 正则表达式 C# (.NET)Regex 总结
  19. How many zero&#39;s and how many digits ? UVA - 10061
  20. 在XP系统中,如何让添加新管理员帐户和原来的管理员帐户同时存在

热门文章

  1. css 属性相关
  2. java 关于getProperty()方法中反斜杠问题
  3. 区间sum 和为k的连续区间-前缀和
  4. ssl 证书申请
  5. E20190226-hm
  6. E20180605-hm
  7. 51nod1212【最小生成树kruskal算法】
  8. python 之 函数 装饰器
  9. 密码破解工具John the Ripper使用说明
  10. 一篇文章彻底弄懂CAS实现SSO单点登录原理