文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

delete语法的本质是什么

2023-07-05 07:59

关注

今天小编给大家分享一下delete语法的本质是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

delete 的返回值

delete 语法是用于 JS 删除对象属性和数组元素

返回 boolean 类型

true 代表删除没有发生异常,但不一定是删除成功

false 一定是删除失败

var obj = {  a: 1,  b: 2};// 删除对象属性console.log(delete obj.a); // true// 删除对象不存在的属性console.log(delete obj.name); // true// 删除全局对象 obj ,因为 var 声明默认会挂载到全局 window 对象上console.log(delete obj); // falseconsole.log(obj); // { b: 2 }

delete 不能删除哪些属性

// varfunction testVar() {  var a = 1;  console.log(delete a); // false  console.log(a); // 1}testVar();// let constfunction testLet() {  let a = 2;  console.log(delete a); // false  console.log(a); // 2}testLet();// configurableconst obj = {};Object.defineProperty(obj, "name", { configurable: false });console.log(delete obj.name); // falseconsole.log("delete undefined", delete undefined);console.log(Object.getOwnPropertyDescriptor(global, "undefined"));console.log("delete Infinity", delete Infinity);console.log("delete NaN", delete NaN);

delete 删除原型上的属性

function User() {  this.name = "云牧";}User.prototype.name = "黛玉";const p = new User();// 删除的是 p 对象的自身属性console.log(delete p.name); // true// p.name 依然可用,因为原型链可以查找到 nameconsole.log(p.name); // 黛玉// 删除原型上的属性console.log(delete User.prototype.name); // true// 实例和原型上都没有 nameconsole.log(p.name); // undefined

delete 删除的到底是什么

var nameVar = "nameVar";nameNotVar = "nameNotVar";// var 声明的不可以删除console.log(Object.getOwnPropertyDescriptor(window, "nameVar")); // configurable: false// 非 var 声明的可以删除console.log(Object.getOwnPropertyDescriptor(window, "nameNotVar")); // configurable: true

严格模式删除报错

下面是错误的例子:

"use strict";// 变量var name = "name";delete name;// 函数和函数参数function fn() {}delete fn;function fn(name) {  delete name;}fm();// configurableTypeErrorconst person = {  name: "帅哥"};Object.defineProperty(person, "name", {  configurable: false});delete person.name;// 严格 referclass Parent {  constructor(name) {    this.name = name;  }  getName() {}}class Child extends Parent {  constructor(name, age) {    super(name);    this.age = age;  }  deleteAny() {    delete super.getName;  }}var child = new Child("child", 18);child.deleteAny();

以上就是“delete语法的本质是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯