首先,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

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. 《剑指offer面试题4》替换空格——实现函数把字符串中每个空格替换成“%20”

    思路: 例如把we are happy这个字符串中所有空格替换成"%20",最直接的做法是从头开始扫苗,遇到空格就替换,并且把空格后面的字符都顺序后移.复杂度O(n^2). 重要思 ...

  2. 快速打开和关闭SQL服务

    将下面文本复制到txt中,然后将文本文件另存为bat @echo off for /f "skip=3 tokens=4" %%i in ('sc query MSSQLSERVE ...

  3. 学习RadonDB源码(二)

    1. 为我新的一天没有放弃而喝彩 学习是一件很容易放弃的事情,因为就算是不学,我也能在现在的岗位上发光发热.可是人不就是一个热爱折腾的种群吗? 今天没有放弃不代表明天没有放弃,也许放弃的可能性大于坚持 ...

  4. Server.MapPath()相关

    Server.MapPath()相关 1.      Server.MapPath()介绍 Server.MapPath(string path)作用是返回与Web服务器上的指定虚拟路径相对应的物理文 ...

  5. UVALive 7327【模拟】

    题意: 每次方案一个或多个子序列: 每个子序列要整除m 认为分割不同,子序列边界的不同就是不同: 1246有4个 1246 12 46 124 6 12 4 6 思路: 先从整体考虑,因为取膜适用于加 ...

  6. uoj#418. 【集训队作业2018】三角形(线段树合并)

    传送门 好迷啊--膜一下ljz 考虑每个操作,如果把操作按先后顺序放到序列上的话,操作一就是把\(w_i\)的石子放到某个节点,那么就是在序列末端加入\(w_i\),然后根据贪心肯定要把它所有儿子的石 ...

  7. 设置上一级controller的backBarButtonItem

    设置上一级controller的backBarButtonItem. self.navigationItem.backBarButtonItem= [[UIBarButtonItem alloc]in ...

  8. 花花的森林(倍增,LCA

    花花的森林,嗯,这是一篇正经的题解. 模拟考的时候没有看出来要怎么求啊,暴力地树形DP.换根.合并.求直径.居然也险险地拿到了80分,不过我们要正经地想正解. 容易想到我们可以让时光倒流,让空间扭转, ...

  9. JS时间框架之舍弃Moment.js拥抱Day.js

    什么是Day.js Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样. 如果您曾经用过 Moment.js, 那么您已经知道如 ...

  10. Hexo搭建博客教程(1) - 安装环境与本地搭建

    前言 搭建个人博客一般有两种选择,一个是使用WordPress,但是需要将博客搭建在服务器上,不过搭建好后写文章方便,适合没有程序基础的人使用.另一个是使用Hexo,相对简洁高效,不需要服务器,既可以 ...