问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何删除object

发布网友 发布时间:2022-04-06 03:34

我来回答

2个回答

热心网友 时间:2022-04-06 05:03

这篇文章介绍了删除Javascript Object中间的key的方法,然后主要详谈了delete的用法,非常的详尽,给小伙伴们参考下
复制代码 代码如下:

delete thisIsObject[key]
or
delete thisIsObject.key
顺便我们来谈谈delete的用法

几个礼拜前, 我有了个机会去翻阅Stoyan Stefanov的 Object-Oriented Javascript 一书.
这本书在亚马逊上拥有很高的评价(12篇评论, 5颗星), 所以我很好奇地想看看它到底是不是那么值得推荐的一本书, 于是我开始阅读函数的那章.
我非常欣赏这本书解释事物的方式, 例子们被以一种非常漂亮, 渐进的方式被组织起来, 看起来即便是初学者也能够轻松掌握这些知识. 然而,
几乎是立刻, 我就发现了一个贯穿整个章节的有趣的误解——删除功能函数. 另外还有一些其它错误(例如函数声明与函数表达式的区别),
但是我们目前将不去讨论它们.

这本书声称:

"函数被作为像一般变量一样对待-它可以被复制到不同的变量中, 甚至被删除". 在这个解释后面附加了这样一段示例:

复制代码 代码如下:

var sum = function(a, b) {return a + b;}
var add = sum;
delete sum
true
typeof sum;
"undefined"

忽略掉一些漏掉的分号, 你能看出这几句代码的错误在哪么? 显然, 错误在于删除sum这个变量的操作是不会成功的.
delete表达式不应该返回true, 并且 typeof sum也不应该返回"undefined".
这一切都因为在JavaScript中删除变量是不可能的. 至少, 在这种声明方式下是不可能的.

所以, 在这个例子中到底发生了什么? 它是一个错误么? 抑或是一个特殊用法? 大概不是这样的.
这一段代码事实上是Firebug控制台中的真实输出, Stoyan一定是使用了它作为快速测试的工具.
这几乎就好像是Firebug遵守了其它一些delete的规则一样. 是Firebug导致了Stoyan误入歧途! 所以, 这儿到底发生了什么?

在回答这个问题之前, 我们首先需要理解delete运算符到底在JavaScript中是如何工作的: 到底什么能够被删除,
什么不能够被删除? 今天, 我将尝试着详细解释这个问题. 我们将看看Firebug的"奇怪"行为并且意识到它其实并不是那么奇怪.
我们将深入了解在声明变量, 函数, 给属性赋值和删除它们的这些场景背后到底隐藏了什么. 我们将看看浏览器的兼容性和一些最臭名昭著的bug.
我们还将讨论ES5的严格模式, 和它如何改变delete操作符的行为.

我将交换着使用JavaScript和ECMAScript, 它们都意味着ECMAScript(除非明显地谈论Mozilla的JavaScript实现)

不出所料, 在网络上, 对delete的解释是相当稀缺的. MDC article大概是最好理解的资源了, 但是, 不幸的是,
它缺失了这个主题的一些有趣的细节. 奇怪的是, 其中一个被遗忘的东西就是Firebug的奇怪表现的原因. 而MSDN
reference在这些方面几乎是无用处的.

Theory

那么, 为什么我们能够删除对象的属性:

复制代码 代码如下:

var o = { x: 1 };
delete o.x; // true
o.x; // undefined

却不能删除这样声明的对象:

复制代码 代码如下:

var x = 1;
delete x; // false
x; // 1

或者函数呢:

复制代码 代码如下:

function x(){}
delete x; // false
typeof x; // "function"

注意: 当一个属性无法被删除时,delete操作符只会返回false

要理解这个, 我们首先需要掌握这些有关变量实例和属性特性的概念——这些概念很不幸地, 很少在JavaScript书中被提及.
我将试着在接下来的几个段落中简单地复习一下这些概念.
这些概念是很难理解的!如果你不在乎"为什么这些东西会以这种方式工作"的话,尽情跳过这一章节好了.

代码的类型:

在ECMAScript中, 有3种不同类型的可执行代码: 全局代码(Global code), 函数代码(Function code)和 Eval代码(Eval code). 这些类型从名称上来说或多或少是有自解释性的, 这里有一个简短的概述:

当一段源代码被看成程序(Program)时, 它将会在全局环境下被执行, 并且被认为是全局代码(Global code). 在一个浏览器环境中, 脚本元素的内容通常被解释为程序, 因此被作为全局代码来执行.

任何直接在一个函数中执行的代码显然被认为是函数代码(Function code). 在浏览器中, 事件属性的内容(如 <p onclick="....">)通常被解释成函数代码.

最后, 被应用到内置函数eval的代码文本被解释成Eval代码(Eval code). 很快我们会发现为什么这种类型是特殊的.

执行上下文(Execution context):

当ECMAScript代码执行时, 它通常会发生在特定的执行上下文中.执行上下文是一个有些抽象的实体概念,
它能帮助理解范围(Scope)和变量实例(Variable instantiation)是如何工作的. 对三种可执行代码的每一种,
都有一个执行上下文相对应. 当一个函数被执行的时候, 我们说"程序控制进入了函数代码的执行上下文"; 当一段全局代码被执行时,
程序控制进入了全局代码的执行上

--------------------------------------------------------------------------------------------------------------
网赚平台QT:601183 推荐人:3组牛人

热心网友 时间:2022-04-06 06:21

删除对象,直接使用delete就可以了。
比如:delete document.getElementById('div');
删除一个属性的过程也很简单,就是将其置为undefined:
user.name=undefined;
user.alert=undefined;
这样就删除了name属性和alert方法。在之后的代码中,这些属性变的不可用。
在添加、修改或者删除属性时,和引用属性相同,也可以采用方括号([])语法:
user[“name”]=”tom”;
使用这种方式还有一个额外的特点,就是可以使用非标识符字符串作为属性名称,例如
标识符中不允许以数字开头或者出现空格,但在方括号([])语法中却可以使用:
user[“my name”]=”tom”;
需要注意,在使用这种非标识符作为名称的属性时,仍然要用方括号语法来引用:
alert(user[“my name”]);
而不能写为:
alert(user.my name);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在公交车上实施扒窃,会受到怎样的处罚? 交通违法行为识别 公交车扒窃会如何处罚? 郑州鱼缸清洗找哪家公司做得比较好? 郑州有没有专业维修鱼缸,清洗鱼缸的? ...的鱼缸,放在办公室养些鱼水草之类的。郑州哪里有卖这样的鱼缸。_百... 我们公司想要定做个观赏鱼缸,不知道郑州哪家公司最专业? 谁知道郑州生态鱼缸定做哪家做的效果最好? 联想电脑启用无线功能的功能键? 笔记本电脑怎么连接网笔记本电脑怎样连接无线网 php清除多个图片属性代码 javascript如何去除对象的某个属性 如何删除对象中的属性,或数组中的元素 在php中弹出信息输入框的功能如何实现?类似下图: php自动弹出窗口代码 PHP 在新页面打开链接自动弹出新页面代码如何写? 我想在PHP页面做一个弹出的登陆页面或其他小窗口。 如何用PHP做出弹出式登陆窗口? php如何制作弹出窗口(像点击登陆会在当前页面多处于一个登陆窗口) 如何在php网页代码中实现点击链接让网页从新窗口打开 如何在php网页代码中实现点击链接让网页从新窗口打开? PHP如何新窗口打开另一个页面? php如何实现弹出层 哪位高手谁知道PHP.INI文件的具体位置 PHP中this,self和static的区别 PHP中调用类方法时-&gt;和::的区别是什么? PHP中构造函数和方法有什么区别 thinkphp中的M方法与D方法有什么区别? PHP strcmp()和strcasecmp()的区别实例 thinkPHP中连接数据库实例化方法D和M的区别 js删除对象属性问题 在java中通过什么方法将一个对象里面的属性移除,如果从数据库里面查询出来是空的就移除掉这 Python中isinstance()的用法? python 3 isinstance函数的用法,下面的代码如何解释? python当中isinstance()的作用以及用法,能详细的说说吗?谢谢 python 语句isinstance是在判断什么?type是什么类型 isinstance python2.7是什么函数 python 中instance是什么类型 type和isinstance函数的区别 Python中继承的理解与运用? Python中用isinstance判断多个变量的类型,如何简洁表述呢 什么是python中的自省 Python里面的和的区别 python中&#39;和&quot;&quot;的区别 python中&quot;&quot;和&#39;什么区别 python中// 和/有什么区别 python中的and和c语言中的&的区别是什么 python中什么是序列,列表,元组,字符串,索引,区别是什么 python的元组和列表有什么区别 关于Python的序列、列表和元组