返回顶部
首页 > 资讯 > 精选 >使用javascript怎么在object中删除属性
  • 103
分享到

使用javascript怎么在object中删除属性

2023-06-15 10:06:51 103人浏览 薄情痞子
摘要

使用javascript怎么在object中删除属性?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在js中,可以使用delete关键字在object中删除属性,语

使用javascript怎么在object中删除属性?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

js中,可以使用delete关键字在object中删除属性,语法格式为“delete object.属性”。delete操作符用于删除对象的某个属性,当delete操作符返回true时表示可以删除,返回false表示不能删除。

从对象上删除属性的语义正确方法是使用delete关键字。

给定对象

const car = {  color: 'blue',  brand: 'Ford'}

您可以使用以下命令从此对象中删除属性

delete car.brand

使用javascript怎么在object中删除属性

它的工作方式还表示为:

delete car['brand']delete car.branddelete newCar['brand']

将属性设置为undefined

如果您需要以非常优化的方式执行此操作,例如在循环中对大量对象进行操作时,另一种选择是将属性设置为undefined 。

由于其性质, delete的性能要比简单地重新分配给undefined 慢很多 ,比慢得多50倍。

但是,请记住,该属性不会从对象中删除。 它的值被擦除了,但是如果您迭代该对象,它仍然存在:

使用delete仍然非常快,只有在您有充分理由这样做时,才应研究此类性能问题,否则始终首选具有更清晰的语义和功能。

删除属性而不更改对象

扩展资料:

delete 操作符用于删除对象的某个属性。

语法:

直接使用delete操作符

delete object.property 或 delete object['property']

例如:

var person = {    name: 'abc'    age: 18}delete person.nameconsole.log(person) // {age: 18}

返回值:

delete操作符具有返回值,返回值为布尔值,对于所有情况都是true,即使是删除不存在的属性也会返回true,还是如上代码,不防打印一下返回值看看

console.log(delete person.name) //trueconsole.log(delete person.job) //即使删除对象不存在的属性依然返回true

但是也有例外的情况(返回false),如果属性是不可配置属性(对于不可配置属性的概念,可以参考Object. defineProperty,我第一次听说这个概念的时候也有点蒙圈), 在非严格模式下,返回false,在严格模式下则会抛出语法错误的异常。

具体使用

对象属性不存在

如上所述,如果删除对象不存在的属性,delete无效,但是返回值仍然为true

原型链上存在该同名属性

如果delete操作符删除属性成功,则该属性将永远不存在,但是该对象原型链上存在该同名属性,则该对象会从原型链上继承该同名属性。但和内存并无关联,内存管理并不是delete操作符可以操作的,而且一点关系也没有。内存管理推荐MDN这篇文章

// 构造函数function Person() {    this.name = "张三",    this.job = "工程师"}Person.prototype.name = "李四"// 创建实例对象var p = new Person();// 只删除p实例的name属性delete p.name;console.log(p) => // 通过打印如下图,name属性成功删除
接下来看: console.log(p.name) => // '李四' 依然可以访问到

所以可以看出delete操作只会在自身的属性上起作用,这里能console出来'张三',是作用域链的原因,当实例本身无该属性的时候,就会去找它的protype身上有无该同名属性。

使用var声明

使用var声明的属性(包括函数),不能从全局作用域或函数作用域中删除

在全局作用域中声明属性:

// 声明属性var a = 1; // 等同于window.adelete a  // 严格模式下抛出语法异常 SyntaxErrorconsole.log(a); // 1 非严格模式下console.log(delete a); // 非严格模式下false
// 声明函数var fn = function () {    console.log(1);}delete fn // 严格模式下抛出语法异常  SyntaxErrorfn() // 1 非严格模式下delete失效, 函数依然存在// 另外, 除字面量定义外,匿名函数定义函数效果也是一样

在函数作用域中声明属性(效果和在全局作用域中一样):

// 局部作用域声明属性funtion fn() {    var a = 1;    delete a; // 严格模式下抛出语法异常 SyntaxError    console.log(a); // 1    console.log(delete a); // 非严格模式下false}fn();
// 局部作用域声明函数var fn = function() {    var fn2 = function() {        console.log(1);    };    delete fn2 // 严格模式下抛出语法异常 SyntaxError     console.log(delete fn2); // false 非严格模式下    fn2(); // 1}fn();

另外, 需要注意的是,在对象中定义的函数是可以删除的,和属性一样,比如

var person = {    name: '张三',    showName: function () {        console.log(this.name);    }}delete person.showNameconsole.log(person.showName) // undefined

let和const声明的属性

任何用let或const声明的属性不能够从它被声明的作用域中删除,我试了下,和var的效果是一样的,目前只能理解到这,如果知道的大神请指点下

不可设置的属性

Math, Array, Object等内置对象的属性不可删除

console.log(Array.length); // 1delete Array.lengthconsole.log(Array.from); 0
delete Array.prototype //严格模式下抛出异常console.log(Array.prototype) // 非严格模式下,prototype依然存在, 可以自己试试了,自己动手,丰衣足食console.log(Array.prototype.join); // 非严格模式下,join方法依然存在

需要注意的是,只是这些内置对象的属性不可删除,内置对象的方法是可以删除的,比如:

console.log(Array.forEach); // 内置函数delete Array.forEach // 不用区分严格模式与否console.log(Array.forEach); // undefined

Object.defineProperty()设置为不可设置的属性,不可删除

var person = {};Object.defineProperty(person, 'name', {    value: '张三',    configurable: false})delete person.name // 严格模式下,抛出异常console.log(person.name); // 张三console.log(delete person.name); // 非严格模式false

var, let以及const创建的不可设置的属性不能被delete操作删除

var a = 'abc'; // 属于window 等同于window.avar aVal = Object.getOwnPropertyDescriptor(window, 'a'); console.log(aVal);//  aVal输入如下   //    {//       value: 2,//         writable: true, //         enumerable: true, //         configurable: false // 由于是var声明的属性,所以为false//     }
var a = 'abc'; // 属于window 等同于window.adelete a // 严格模式下抛出异常var aVal = Object.getOwnPropertyDescriptor(window, 'a'); console.log(aVal);console.log(delete a); //false//  非严格模式下,aVal输入如下   //    {//       value: 2,//         writable: true, //         enumerable: true, //         configurable: false // 由于是var声明的属性,所以为false//     }

如果开始没有阅读,再去看看吧Object. defineProperty。如果了解,可以直接略过。

删除数组

使用delete操作符删除数组总某项元素时,被删除的元素会从该数组中删除,但是数组的length并不会改变

var arr = [1, 2, 3];delete arr[1]console.log(arr); // [1, undefined × 1, 2]console.log(delete arr[1]) // trueconsole.log(arr[1]); // undefined

但是这里存在一个问题

console.log(1 in arr) // false

所以如果想把数组中某一项赋值成undefined时,不应该使用delete操作符,而是直接使用下边赋值

arr[1] = undefined;// 这样就可以解决上面的问题 console.log(1 in arr) // true

关于使用javascript怎么在object中删除属性问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: 使用javascript怎么在object中删除属性

本文链接: https://lsjlt.com/news/279735.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用javascript怎么在object中删除属性
    使用javascript怎么在object中删除属性?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在js中,可以使用delete关键字在object中删除属性,语...
    99+
    2023-06-15
  • JavaScript中怎么删除对象属性
    今天就跟大家聊聊有关JavaScript中怎么删除对象属性,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 1.将属性设置为 undefin...
    99+
    2024-04-02
  • 怎么在javascript中移除属性
    这期内容当中小编将会给大家带来有关怎么在javascript中移除属性,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在javascript中,可以利用removeAttribute() 方法来删除属性。r...
    99+
    2023-06-14
  • 怎么用javascript对象删除一个属性
    这篇文章主要介绍“怎么用javascript对象删除一个属性”,在日常操作中,相信很多人在怎么用javascript对象删除一个属性问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • css中怎么删除属性
    这篇文章主要介绍了css中怎么删除属性的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇css中怎么删除属性文章都会有所收获,下面我们一起来看看吧。在某些情况下,我们可能需要删除某些属性。有以下几种情况:继承性CS...
    99+
    2023-07-06
  • JavaScript怎么删除对象的某个属性
    小编给大家分享一下JavaScript怎么删除对象的某个属性,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JavaScript有什么特点1、js属于一种解释性脚本...
    99+
    2023-06-15
  • hasOwnProperty判断属性怎么在JavaScript中使用
    这篇文章将为大家详细讲解有关hasOwnProperty判断属性怎么在JavaScript中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、说明hasOwnProperty判断对象是否...
    99+
    2023-06-15
  • 怎么在javascript中删除行
    怎么在javascript中删除行?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先,打开html编辑器,新建html文件,例如:index.html,插入需要的表格。之后在i...
    99+
    2023-06-14
  • javascript中title属性怎么使用
    本篇内容介绍了“javascript中title属性怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • ES6中Object属性如何使用
    本篇文章为大家展示了ES6中Object属性如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们之前定义对象属性的方法var obj =&...
    99+
    2024-04-02
  • CSS3中的新属性object-view-box怎么使用
    这篇文章主要讲解了“CSS3中的新属性object-view-box怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS3中的新属性object-v...
    99+
    2024-04-02
  • 怎么在JavaScript中使用splice删除数组元素
    怎么在JavaScript中使用splice删除数组元素?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JavaScript的作用是什么1、能够嵌入动态文本于HTML页面。2、对...
    99+
    2023-06-14
  • 怎么在CSS中使用overflow属性清除浮动
    本篇文章为大家展示了怎么在CSS中使用overflow属性清除浮动,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。overflow清除浮动以下面的XHTML代码为例:XML/HTML Code复制内容...
    99+
    2023-06-09
  • 怎么在css中使用clearfix属性清除浮动
    本篇文章为大家展示了怎么在css中使用clearfix属性清除浮动,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。clearfix的定义: 代码如下:.clearfix:after {}{ conte...
    99+
    2023-06-09
  • 怎么在CSS中使用clear属性清除浮动
    这期内容当中小编将会给大家带来有关怎么在CSS中使用clear属性清除浮动,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是CSS清除浮动? 网络上流行的说法是:在非IE浏览器(如Firefox)下,当...
    99+
    2023-06-08
  • 怎么在Javascript中删除数组
    本篇文章给大家分享的是有关怎么在Javascript中删除数组,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Javascript删除数组的方法:1,delete方法:delet...
    99+
    2023-06-14
  • 怎么在javascript中删除节点
    这篇文章给大家介绍怎么在javascript中删除节点,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。方法1:使用remove()删除节点remove()方法可用于删除父节点上的所有元素,包括所有文本和子节点。示例:删除...
    99+
    2023-06-14
  • mysql怎么删除主键属性
    mysql删除主键属性的方法:1.先删除auto_increment。 2.再删除主键约束 primary key。mysql删除主键属性的方法:要先删除auto_increment。然后删除主键约束 primary key。例如表prod...
    99+
    2024-04-02
  • jquery怎么删除标签属性
    要删除一个标签的属性,可以使用jQuery的removeAttr()方法。语法如下:```javascript$(selector)...
    99+
    2023-08-15
    jquery
  • javascript中如何删除元素中的指定属性
    javascript中如何删除元素中的指定属性,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在JavaScript中,可以使用removeAt...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作