JS中的delete操作符
首先,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操作符的更多相关文章
- js中的new操作符与Object.create()的作用与区别
js中的new操作符与Object.create()的作用与区别 https://blog.csdn.net/mht1829/article/details/76785231 2017年08月06日 ...
- JS中的一元操作符
表达式 一元操作符 优先级 结合性 运算顺序 表达式是什么? 就是JS 中的一个短语,解释器遇到这个短语以后会把对它进行计算,得到一个结果参与运算,我们把这种要参与到运算中的各种各样的短语称为表达式. ...
- JS中的new操作符
在JS中定义一个构造函数,然后用new操作符构造对象obj,JS代码如下. function Base(){ this.name = "swf"; this.age =20; } ...
- js小知识 delete操作符
说明:delete操作符用于删除对象的某个属性. 语法: delete object.property //删除 对象.属性 delete object['property'] //删除 对象['属性 ...
- JS中的 new 操作符简单理解
首先上一一个简单的 new 操作符实例 var Person = function(name){ this.name = name; this.say = function(){ return &qu ...
- JS 中的 new 操作符
按照javascript语言精粹中所说,如果在一个函数前面带上new来调用该函数,那么将创建一个隐藏连接到该函数的prototype成员的新对象,同时this将被绑定到那个新对象上.这个话很抽象,我想 ...
- js中的new操作符解析
new 操作符做了以下事情: 1.创建一个对象,将对象赋值给this function Person(name, age) { console.log(this) //Person {} } let ...
- JS中void(0)操作符的使用
今天 在看源码时,发现这种写法 if(value === void(0)){ // } 以前没有见过这种写法,感觉就是判断一个变量是否有值,官网上是这样说的: void运算符 对给定的表达式进行求值, ...
- JS中的new操作符原理解析
var Person = function(name){ this.name = name; } Person.prototype.sayHello = function() { console.lo ...
随机推荐
- jquery文档内容的获取和设置
- Codevs 1961 躲避大龙
1961 躲避大龙 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 你早上起来,慢悠悠地来到学校门口, ...
- [Xcode 实际操作]二、视图与手势-(8)UIView视图的纹理填充
目录:[Swift]Xcode实际操作 本文将演示将导入的图片作为纹理,平铺整个屏幕. 往项目中导入一张图片. 点击底部左下角的图标->[Import]->选择需要导入的图片->[O ...
- 笔记-JavaWeb学习之旅10
Servlet server applet运行在服务器端的小程序,servlet就是一个接口,定义了Java类被浏览器访问到的规则(Java类重写这个接口,就可以被浏览器(tomcat)识别) Ser ...
- IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术原理
Cookie使用HTTPHeader传递数据.Cookie机制定义了两种报头,Set-Cookie报头和Cookie报头.Set-Cookie报头包含于Web服务器的响应头(ResponseHeade ...
- 笔记-JavaWeb学习之旅8
Window对象-定时器方法 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- 基于java开发的在线题库系统tamguo
简介 探果网(简称tamguo)是基于java开发的在线题库系统,包括 在线访问 后台运营 会员中心 书籍中心 管理员账号:system 密码:123456 因为线上数据和测试数据没有做到隔离,作者已 ...
- B. Lecture Sleep( Educational Codeforces Round 41 (Rated for Div. 2))
前缀后缀和搞一搞,然后枚举一下区间,找出最大值 #include <iostream> #include <algorithm> using namespace std; ; ...
- 两段代码实现vue路由懒加载
const Foo = () => import('./Foo.vue') const router = new VueRouter({ routes: [ { path: '/foo', co ...
- Codeforces Round #546 (Div. 2) A. Nastya Is Reading a Book
链接:https://codeforces.com/contest/1136/problem/A 题意: 给n个区间,每个区间范围不超过100,n不超过100. 给一个位置k,1-(k-1)是遍历过的 ...