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

js代码:

  1. function wxCount ($element) {
  2. this.init($element);
  3. }
  4. wxCount.prototype = {
  5. init : function(){...}, //初始化方法
  6. count function(){...}, //计算方法
  7. destroy function(){
  8. delete this;
  9. } //删除方法
  10. }

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

example:

  1. <script type="text/javascript">
  2. x = 1; // 创建全局属性x
  3. var y = 2; // var声明,y为变量
  4. obj = {
  5. a : 3,
  6. b : 4
  7. }; // 创建全局对象obj,并有a和b两个成员变量
  8. delete x; // returns true
  9. delete y; // returns false
  10. delete Math.PI; // returns false
  11. delete obj.a; // returns true
  12. delete obj.b; // returns true
  13. delete obj; // returns true
  14. function f() {
  15. var z = 5;
  16. var obj2 = {
  17. c : 6,
  18. d : 7
  19. }
  20. obj3 = {
  21. e : 8
  22. }
  23. delete z; // returns false
  24. delete obj2; // returns false
  25. delete obj2.c; // returns true
  26. delete obj3; // returns true
  27. }
  28. </script>

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

1.全局属性可以删除

  1. x = 150;
  2. delete x; //return true
  3. function f() {
  4. obj = {
  5. a : 2
  6. }
  7. }
  8. delete obj; //return true

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

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

  1. var x = 150;
  2. delete x; //return fale
  3. function y() {}
  4. delete y; //return false

3.内置的属性不能删除

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

4.原型上的属性

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

5.删除数组中元素

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

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

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

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

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

JS中的delete操作符的更多相关文章

  1. js中的new操作符与Object.create()的作用与区别

    js中的new操作符与Object.create()的作用与区别 https://blog.csdn.net/mht1829/article/details/76785231 2017年08月06日 ...

  2. JS中的一元操作符

    表达式 一元操作符 优先级 结合性 运算顺序 表达式是什么? 就是JS 中的一个短语,解释器遇到这个短语以后会把对它进行计算,得到一个结果参与运算,我们把这种要参与到运算中的各种各样的短语称为表达式. ...

  3. JS中的new操作符

    在JS中定义一个构造函数,然后用new操作符构造对象obj,JS代码如下. function Base(){ this.name = "swf"; this.age =20; } ...

  4. js小知识 delete操作符

    说明:delete操作符用于删除对象的某个属性. 语法: delete object.property //删除 对象.属性 delete object['property'] //删除 对象['属性 ...

  5. JS中的 new 操作符简单理解

    首先上一一个简单的 new 操作符实例 var Person = function(name){ this.name = name; this.say = function(){ return &qu ...

  6. JS 中的 new 操作符

    按照javascript语言精粹中所说,如果在一个函数前面带上new来调用该函数,那么将创建一个隐藏连接到该函数的prototype成员的新对象,同时this将被绑定到那个新对象上.这个话很抽象,我想 ...

  7. js中的new操作符解析

    new 操作符做了以下事情: 1.创建一个对象,将对象赋值给this function Person(name, age) { console.log(this) //Person {} } let ...

  8. JS中void(0)操作符的使用

    今天 在看源码时,发现这种写法 if(value === void(0)){ // } 以前没有见过这种写法,感觉就是判断一个变量是否有值,官网上是这样说的: void运算符 对给定的表达式进行求值, ...

  9. JS中的new操作符原理解析

    var Person = function(name){ this.name = name; } Person.prototype.sayHello = function() { console.lo ...

随机推荐

  1. Jmeter调用JAVA jar包传参

    http://blog.csdn.net/xiazdong/article/details/7873767#

  2. 使用SQL访问MongoDB

    使用SQL访问MongoDB 简介 使用SQL访问MongoDB有多种解决方案,就我所知的,除了今天要介绍的MongoDB Connector for BI外,还有Studio 3T,但后者只有在企业 ...

  3. MYSQL5.7版本解决sql_mode=only_full_group_by问题

    在安装有些二开框架时会遇到下面的问题,在填写完数据库密码之后他会提示你请在mysql配置文件中修改ql-mode去掉ONLY_FULL_GROUP_BY,但是我们去mysql的配置文件中查找此配置,有 ...

  4. 632. Smallest Range(priority_queue)

    You have k lists of sorted integers in ascending order. Find the smallest range that includes at lea ...

  5. 51nod1086(多重背包&二進制)

    題目鏈接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1086 題意:中文題誒- 思路:很顯然這是一道多重背包題,不過這 ...

  6. Codevs 3409 搬运礼物

    3409 搬运礼物 CodeVS原创  时间限制: 1 s  空间限制: 64000 KB  题目等级 : 青铜 Bronze 题解       题目描述 Description 小浣熊松松特别喜欢交 ...

  7. 2013 Noip提高组 Day1

    3285 转圈游戏 2013年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description ...

  8. IT兄弟连 JavaWeb教程 EL与JSTL表达式经典面试题

    1.简述EL表达式的作用 EL表达式的作用可分为以下三类 访问Bean的属性. 输出简单的运算结果. 获取请求参数值. 2.JSP标签的作用?如何定义? JSP标签可以分离JSP页面的内容和逻辑,业务 ...

  9. SpringMVC注解校验

    spring注解式参数校验     版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/jinzhencs/article/details/5168283 ...

  10. 常用SQL语句写法(一)

    <resultMap id="userResult" type="com.cloudwalk.shark.model.User"> <id p ...