JavaScript中delete操作符对引用类型对象的影响
作者:闭包旅人时间:2026-10-27 16:18:28浏览:430
本文通过具体代码示例解析JavaScript中delete操作符的行为。测试表明,当删除包含引用类型属性的对象时,delete仅切断当前对象对该引用对象的指针指向,而不会删除引用对象本身。其他持有相同引用的变量仍可查看原数据,深入理解指针机制有助于避免内存泄漏和逻辑错误。
JavaScript delete操作符对引用类型的影响
以下示例展示了相关现象:
代码实现如下:
var testVar = {
a : {
test : 1
}
},
test1 = {},
test2 = {};
test1.a = testVar.a;
test2.a = testVar.a;
/*
delete test1.a;
console.log(test1.a); // undefined
console.log(test2.a); // Object {test: 1}
console.log(testVar.a); // Object {test: 1}
*/
delete testVar.a;
console.log(test1.a); // Object {test: 1}
console.log(test2.a); // Object {test: 1}
console.log(testVar.a); // undefined
通过上述测试可以得出,在JavaScript中,若使用delete删除的属性值为引用类型,该操作实际上移除的是当前对象指向该引用对象的指针,而非引用对象本身。因此,即使执行了delete testVar.a,test1.a所指向的对象依然存在于内存中且未被删除。 关于JavaScript中delete关键字的底层原理,推荐阅读:
http://perfectionkills.com/understanding-delete/
该文章的中文翻译版本:
http://www.ituring.com.cn/article/7620
作者最新文章
什么时候该用JS构造器:与工厂模式、字面量的选择对比
2026-11-05 16:18:22
推荐几款轻量级JS照片墙开源库及对比
2026-11-05 15:56:19
JavaScript递归写法有哪些常见陷阱及避免方法
2026-11-05 14:53:38
JS数组浅拷贝与深拷贝怎么选?场景与方法总结
2026-11-05 14:41:02
p5.js 中 setup() 和 draw() 函数的执行机制详解
2026-11-05 12:32:38
