javascript如何在object中删除属性


当前第2页 返回上一页

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

5. 不可设置的属性

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

1

2

3

console.log(Array.length); // 1

delete Array.length

console.log(Array.from); 0

1

2

3

delete Array.prototype //严格模式下抛出异常

console.log(Array.prototype) // 非严格模式下,prototype依然存在, 可以自己试试了,自己动手,丰衣足食

console.log(Array.prototype.join); // 非严格模式下,join方法依然存在

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

1

2

3

console.log(Array.forEach); // 内置函数

delete Array.forEach // 不用区分严格模式与否

console.log(Array.forEach); // undefined

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

1

2

3

4

5

6

7

8

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操作删除

1

2

3

4

5

6

7

8

9

10

var a = 'abc'; // 属于window 等同于window.a

var aVal = Object.getOwnPropertyDescriptor(window, 'a');

console.log(aVal);

//  aVal输入如下  

//    {

//       value: 2,

//         writable: true,

//         enumerable: true,

//         configurable: false // 由于是var声明的属性,所以为false

//     }

1

2

3

4

5

6

7

8

9

10

11

12

var a = 'abc'; // 属于window 等同于window.a

delete 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。如果了解,可以直接略过。

6. 删除数组

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

1

2

3

4

5

var arr = [1, 2, 3];

delete arr[1]

console.log(arr); // [1, undefined × 1, 2]

console.log(delete arr[1]) // true

console.log(arr[1]); // undefined

但是这里存在一个问题

1

console.log(1 in arr) // false

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

1

2

3

arr[1] = undefined;

// 这样就可以解决上面的问题

console.log(1 in arr) // true

【推荐学习:javascript高级教程

以上就是javascript如何在object中删除属性的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

javascript 中 setinterval 函数怎么用?

javascript怎么把字符串转换为数组

详解使用 javascript 解析 url的方法

url完整结构以及同源跨域处理的介绍

javascript常量和变量的区别有哪些

javascript的不等于是啥符号

javascript怎么删除table表格

javascript中日期如何转为时间戳

javascript中怎么将xml转为json

javascript数组求和的5种常用方法

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...