`

JS变量对象delete

 
阅读更多

转载:http://www.nowamagic.net/librarys/veda/detail/1673

关于变量,有一个重要的知识点。变量相对于简单属性来说,变量有一个特性(attribute):{DontDelete},这个特性的含义就是不能用delete操作符直接删除变量属性。

1 a = 10;
2 alert(window.a); // 10
3 alert(delete a); // true
4 alert(window.a); // undefined
5   
6 var b = 20;
7 alert(window.b); // 20
8 alert(delete b); // false
9 alert(window.b); // still 20

但是这个规则在有个上下文里不起走样,那就是eval上下文,变量没有{DontDelete}特性。

1 eval('var a = 10;');
2 alert(window.a); // 10
3 alert(delete a); // true
4 alert(window.a); // undefined

使用一些调试工具(例如:Firebug)的控制台测试该实例时,请注意,Firebug同样是使用eval来执行控制台里你的代码。因此,变量属性同样没有{DontDelete}特性,可以被删除。

分享到:
评论

相关推荐

    js delete 用法(删除对象属性及变量)

    在JavaScript中,`delete`运算符主要用于删除对象的属性,而不是变量。让我们深入探讨`delete`的用法、限制以及其在不同情况下的行为。 ### 1. 删除对象属性 `delete`运算符用于从对象中删除一个属性。在示例1中:...

    javascript 中的 delete及delete运算符

    当变量和函数被声明时,它们成为了变量对象(Variable object)的属性。变量对象可能是活化对象(在函数代码中)或全局对象(在全局代码中)。这些通过声明创建的属性都会携带DontDelete内部属性。因此,这些通过`...

    JS删除对象中某一属性案例详解

    需要注意的是,delete操作符不能删除那些由JavaScript内置的对象(如Math对象、Array对象等)和全局对象(如window对象)中预先定义的属性,以及通过var、let、const声明的局部变量。 我们从以下几个方面深入了解...

    韩顺平 javascript 笔记 js面向对象 笔记 韩顺平 完整版

    在韩顺平的JavaScript笔记中,他深入讲解了JS面向对象编程的各个方面,包括变量的作用域、对象引用、this关键字的使用以及对象的方法。 首先,变量的作用域在JavaScript中是一个关键概念。带var和不带var声明的变量...

    Javascript中的delete介绍

    若要理解delete操作符的正确使用方法及其限制,首先需要对变量实例化、属性特性、可执行代码类型、执行上下文以及变量对象和激活对象有所了解。 首先,关于delete操作符的使用,它通常用于删除对象的属性。比如,当...

    JavaScript变量声明详解.pdf

    JavaScript中的变量声明是编程的基础,理解这一概念对于编写健壮的代码至关重要。本文将深入探讨JavaScript中的变量声明,包括全局变量、...对于更多JavaScript变量声明的深入学习,可以参考IT技术专栏获取相关信息。

    Javascript delete 引用类型对象

    在JavaScript中,`delete`运算符主要用于删除对象的属性或者数组的元素,但它对引用类型对象的处理方式可能与我们直觉中的预期有所不同。这里,我们将深入探讨`delete`在引用类型对象上的行为,以及为什么在上述示例...

    解析JavaScript中delete操作符不能删除的对象

    在JavaScript中,`delete`操作符用于删除对象的属性或者变量。然而,并非所有属性或变量都可以使用`delete`操作符删除。以下是关于JavaScript中`delete`操作符不能删除的对象的详细分析: 首先,理解`delete`的工作...

    JavaScript变量声明详解

    JavaScript变量声明是编程基础中的重要一环,理解变量声明对于编写有效的JS代码至关重要。本文将深入探讨JavaScript中的变量声明方式,以及与之相关的全局变量、局部变量、隐式全局变量和“hoisting”(悬置/置顶...

    javascript中的delete使用详解

    对于变量,它们在变量对象中被实例化,而函数声明则直接放入作用域链,这就是为什么`delete`不能删除函数的原因——它们不是对象属性,而是作用域的一部分。 在ECMAScript 5的严格模式下,`delete`的行为有所改变。...

    JS面向对象.pdf

    - 使用delete操作符删除对象的属性,例如:`delete person.name` 6. for-in循环:用于遍历对象的所有可枚举属性。例如,在for-in循环中可以遍历对象的每个属性,并执行某些操作。 7. 对象的属性值可以是任何类型...

    javascript 面向对象技术基础教程第1/2页

    JavaScript提供delete操作符来删除对象的属性,而判断属性是否存在于对象中可以通过in操作符来实现。 数组在JavaScript中也被视为对象,具有长度属性,并支持元素的添加和删除操作。数组特别适合于存储有序的数据...

    Javascript中的delete操作符详细介绍

    javascript中,变量和对象属性关系非常微妙,甚至可以很多时候会被等同起来,因为 javascript 在执行脚本之前会创建一个global对象,在浏览器中就是window对象,所有的全局变量都是这个global对象的属性,执行函数时...

    javascript如何创建对象

    在创建对象时,还涉及对属性的访问,可以通过点语法(.)访问对象的属性,这种方式直观易用,但如果属性名是变量或需要通过循环遍历对象属性时,应该使用方括号([])语法。 在JavaScript中,对象是引用类型,存储...

    Actionscript中delete关键字例子

    在ActionScript中,`delete`关键字用于删除对象属性或数组元素,但不能直接删除变量。让我们深入探讨`delete`关键字的使用及其在ActionScript中的工作原理。 首先,`delete`操作符可以用来删除对象的属性。当你创建...

    JavaScript:对象与原型链教程

    本教程详细介绍了JavaScript中的对象与原型链概念,包括数据类型与变量、函数与作用域以及对象与属性的各个方面。理解这些基本概念对于深入学习JavaScript至关重要。通过本教程的学习,你应该能够更好地掌握...

    用new创建对象和直接定义的区别

    这种方式常见于C++中的局部变量,或者JavaScript中用大括号`{}`创建的对象字面量。这种方式创建的对象生命周期短,因为它们与定义它们的作用域绑定。 ```cpp // C++ 示例 class Person { public: string name; ...

    JavaScript每天必学之数组和对象部分

    在JavaScript中,我们可以通过delete操作符来删除对象的属性。尽管可以将属性设置为undefined或null来隐藏属性,但这并不是真正的删除,只是移除了属性和值的关联。 总结来说,JavaScript中的对象和数组是实现复杂...

Global site tag (gtag.js) - Google Analytics