首先,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. JAVA基础--JAVA 集合框架(泛型、file类)16

    一.集合总结 集合:Collection体系.Map体系. Collection体系:单列集合的共性操作规则. List:列表,可以重复,有下标,拥有特有的迭代器ListIterator. Array ...

  2. Android NDK开发指南(二)Android.mk文件

    http://www.cnblogs.com/yaozhongxiao/archive/2012/03/06/2382225.html 1.  概述 Android.mk文件是用来描述build sy ...

  3. mysql--浅谈查询1

    这是对自己学习燕十八老师mysql教程的总结,非常感谢燕十八老师. 依赖软件:mysql5.6 系统环境:win 在谈查询之前,先说一个特别重要的概念 一定将列名看成变量,既然是变量就可以运算 一定将 ...

  4. 彻底剖析RMI底层源码 、手写轻量级RMI框架

    https://blog.csdn.net/Z0157/article/details/82049975 User public class User { private int age; publi ...

  5. ios wkwebview同步cookie ajax请求偶尔异常问题

    let config = WKWebViewConfiguration.init() config.preferences = WKPreferences.init() config.preferen ...

  6. css-原理详解

    语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明: 选择器一般使用id或者class选择器,声明由{}包含,每条声明由一个属性和一个值组成. .city { float:left; ...

  7. 【bzoj1731】Layout 排队布局

    1731: [Usaco2005 dec]Layout 排队布局 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 868  Solved: 495[Subm ...

  8. 转 OUI and OPatch Do Not Recognize JDK/JRE on Windows

    issue 1: 新覆盖的opatch 提示,无法opatch 报错 此时不应有1.6 D:\app\Administrator\product\11.2.0\dbhome_1\OPatch\ocm\ ...

  9. 学习中对input()的一些总结(raw_input()与input())

  10. dubbo-springboot

    一.服务提供者boot-user-service-provider 服务提供者boot-user-service-provider代码结构如下: 1.服务提供者boot-user-service-pr ...