JS中的delete操作符
2024-09-04 15:59:01
首先,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
最新文章
- java面向对象六原则一法则
- C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
- NYOJ题目816它合法吗?
- SQL索引及视图常用语法
- MySql 服务端与客户端下载地址
- iscsiadm用法简介
- 【HDOJ】1297 Children’s Queue
- iOS开发学习记录【整理】
- Delphi自定义消息应用及delphi托盘实现
- 在不同编程语言中对Unix时间戳进行转换(Unix timestamp)
- Mysql的四种分区
- pan
- 在Java中怎样逐行地写文件?
- Python数据类型和变量
- 天气类App原型制作分享-ColorfulClouds
- Oracle 如何开启归档模式
- Windows安装VNC服务端
- 通用 正则表达式 C# (.NET)Regex 总结
- How many zero&#39;s and how many digits ? UVA - 10061
- 在XP系统中,如何让添加新管理员帐户和原来的管理员帐户同时存在