位置: 编程技术 - 正文
一、变量
说到javascript中的delete操作符,还是首先要搞清楚javascript中的变量和属性之间的关系。
javascript中,变量和对象属性关系非常微妙,甚至可以很多时候会被等同起来,因为 javascript 在执行脚本之前会创建一个global对象,在浏览器中就是window对象,所有的全局变量都是这个global对象的属性,执行函数时也会创建一个activation对象,所有的局部变量都是这个activation对象的属性。这些可以大家可以去了解一下javascript作用域和闭包。
似乎变量就等同于对象属性,其实不然,至少对于delete操作符来说还是不一样的。我的理解是变量声明是必须通过 var 语句来完成的,未通过var 语句声明的全局变量都是都是window对象的属性。这样就很容易的理解变量和对象属性的关系了。
二、delete操作符
delete操作符是用来删除对象属性的。对于引用类型的值,它也是删除对象属性的本身,不会删除属性指向的对象。如果有疑问可以看看基本类型和引用类型的值,或者测试下面的代码:
另外,delete o.x 也可以写作 delete o["x"],两者效果相同。
三、变量是不能删除的
通过var声明的变量和通过function声明的函数拥有dontdelete特性,是不能被删除。未通过var声明的全局变量(全局对象的属性)
四、原型中声明的属性和对象自带的属性无法被删除
原型prototype中声明的属性和对象自带的属性(其实这些属性也是在原型prototype中的)可以认为是带有dontdelete的特性的,无法被删除。例如
五、eval语句下的几个例外
eval执行的代码中,通过var声明的变量虽然与正常的var声明变量同属于global对象,但它们不具有dontdelete特性,能被删除。但是eval的代码中的函数内通过var定义的变量具有dontdelete,不能被删除。
六、delete的返回值
delete是普通运算符,会返回true或false。当被delete的对象的属性存在并且拥有dontdelete时 返回false,否则返回true。 这里的一个特点就是,对象属性不存在时也返回true,所以返回值并非完全等同于删除成功与否。
推荐整理分享Javascript中的delete操作符详细介绍(JavaScript中的数据类型分为两大类),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:JavaScript中的方法名不区分大小写,JavaScript中的变量名不区分大小写,JavaScript中的变量名不区分大小写,JavaScript中的方法名不区分大小写,JavaScript中的this指向,JavaScript中的变量名不区分大小写,JavaScript中的变量名不区分大小写,JavaScript中的变量名不区分大小写,内容如对您有帮助,希望把文章链接给更多的朋友!
Javascript动态引用CSS文件的2种方法介绍 最近做一个项目,需要javascript动态插入样式,结果以前的方法失效了!查了2个小时的原因竟然是自己手贱,这个最后再说!javascript插入样式在前端开
js中的caller和callee属性介绍和例子 一、caller返回一个对函数的引用,该函数调用了当前函数。functionName.callerfunctionName对象是所执行函数的名称。说明对于函数来说,caller属性只有在函数
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍 箭头函数是ECMAScript6最受关注的更新内容之一。它引入了一种用「箭头」(=)来定义函数的新语法,它…它碉堡了~。箭头函数与传统的JavaScript函数主要
友情链接: 武汉网站建设