JavaScript知识点之:delete操作符
delete
操作符来删除一个隐式声明的全局变量,也就是没有使用var
定义的全局变量.
如果delete
操作符删除成功, 则被delete的属性已从所属的对象上彻底消失, 随后,该对象的原型上可能存在的一个同名属性会被继承.
一些对象的属性不能被delete. ECMA 262 规范中把这些属性标记为DontDelete.
x = 42; // 隐式声明的全局变量
var y = 43; // 显式声明的全局变量
myobj = new Number();
myobj.h = 4; // 添加属性h
myobj.k = 5; // 添加属性kdelete x; // 返回 true (隐式声明的全局变量可以被删除)
delete y; // 返回 false (显式声明的全局变量不能被删除,该属性有DontDelete标记)
delete Math.PI; // 返回 false (内置对象的内置属性不能被删除, 该属性有DontDelete标记)
delete myobj.h; // 返回 true (用户定义的属性可以被删除)
with(myobj) { delete k; // 返回 true (相当于delete myobj.k)
}
delete myobj; // 返回 true (隐式声明的全局变量可以被删除)
你不能删除一个对象从原型继承而来的属性(不过你可以从原型上直接删掉它).
function Foo(){}Foo.prototype.bar = 42;var foo = new Foo();delete foo.bar; // 无效的操作alert(foo.bar); // alerts 42, 继承的属性delete Foo.prototype.bar; // 直接删除原型上的属性alert(foo.bar); // alerts "undefined",已经没有继承的属性
当你删除一个数组元素时,数组的length属性并不会变小.当用delete
操作符删除一个数组元素时,被删除的元素已经完全不属于该数组.
var trees = ["redwood","bay","cedar","oak","maple"];
delete trees[3];
if (3 in trees) {// 不会执行到这里
}
如果你想让一个数组元素的值变为undefined而不是删除它,可以使用 undefined给其
赋值而不是使用delete操作符.
var trees = ["redwood","bay","cedar","oak","maple"];
trees[3]=undefined;
if (3 in trees) {// 会执行到这里
}
JavaScript知识点之:delete操作符相关推荐
- 呕心沥血 JavaScript知识点梳理大全,超详细 建议收藏!!!
呕心沥血 JavaScript知识点梳理大全,超详细 建议收藏!!! ✴️大家好,我是王同学,爆肝三天三夜王同学把JavaScript 知识点梳理了一遍,文章没有一点套路,只有满满的干货 ✴️如果对你 ...
- 浅谈Javascript中的void操作符
由于JS表达式偏啰嗦,于是最近便开始采用Coffeescript来减轻负担.举个栗子,当我想取屋子里的第一条dog时,首先要判断house对象是否存在,然后再判断house.dogs是否存在,最后取h ...
- 小白学小程序需要的JavaScript知识点
小白学微信小程序需要的JavaScript知识点 文章目录 小白学微信小程序需要的JavaScript知识点 1 js数据类型 Number 字符串 布尔值 数组 对象 null和undefined ...
- javascript知识点_一点点JavaScript知识是第1部分很危险的事情
javascript知识点 几乎是一个数据库的奇怪故事 (The Strange Tale of the Almost-a-Database) 这不是教程,这是一个警告性的故事. (This is n ...
- 在 JS 中要尽量避免使用 delete 操作符
目录 一.delete 操作符灵魂六问 1.delete 的返回值是什么? 2.delete 删除不存在的属性返回值是什么? 3.delete 能不能删除原型上的属性? 4.delete 能否删除变量 ...
- Javascript全局变量和delete
首先看一段代码: // 定义三个全局变量 var global_var = 1; global_novar = 2; // 反面教材 (function () {global_fromfunc = 3 ...
- C++ new delete操作符
//new delete操作符 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std;/* 1.ne ...
- C++ new和delete操作符
在C++语言中,new.new[].delete和delete[]操作符通常会被用来动态地分配内存和释放内存.需要注意的是new.new[].delete和delete[]是操作符,而非函数:new和 ...
- C++中的new和delete操作符重载
文章目录 1 new和delete操作符重载 1.1 new和delete操作符重载简介 1.2 静态存储区中创建动态对象 1.3 在指定的地址上创建C++对象 2 new[]和delete[]操作符 ...
最新文章
- vue导入excel进度条_Vue 前端开发——导入Excel/Csv
- 浅谈ASP.NET Forms验证
- Stanford CS230深度学习(三)调参、正则化和优化算法
- foreman架构的引入6-整合puppetmaster
- python实现Longest Common Subsequence最长公共子序列算法
- Qt笔记——MOC(莫克)
- ML--HMM(隐马尔可夫模型及python的实现1)
- 多项式ln,exp学习小计
- python语法错误怎么办_Python中出现语法错误时解决方法
- 联想G460驱动问题
- 主成分与因子分析异同_主成分分析和因子分析有什么区别?
- 微软中国艰难前行:业绩遭遇连续跳票
- CSS如何进行图片定位
- c语言 判断互质,[经典算法] 找出某数以内与其互质的数
- NVIDIA RTX A6000深度学习训练基准
- MySQL安装2出现Typical_Mysql安装 - osc_c7lpn2ge的个人空间 - OSCHINA - 中文开源技术交流社区...
- 富文本关键字搜索高亮,解决方法及优化(收藏!)
- SQL SERVER查询生僻字问题
- yii setFlash getFlash 用法 简单说明
- VC欣赏、家人是阻力,极客化、国际化——90后创业生态
热门文章
- Cocos2d-X开发中国象棋《三》開始场景的实现
- PostgreSQL修炼之道:从小工到专家. 3.1 SQL语句语法简介
- Vuex之理解Store
- Clustered Data ONTAP Fundamentals课程学习(1)
- 【转】JVM内存管理:深入垃圾收集器与内存分配策略
- 和平之翼代码生成器 SMEU 版 4.0.0 RC 宝船候选版发布
- 撤销commit且未push操作的git命令
- 第 8 章 TokyoCabinet/Tyrant
- mysqlbinlog unknown variable:default-character-set=gbk
- (六)数据处理——录入、清洗、加工、描述