欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

delete?語法的本質(zhì)深入解析

 更新時(shí)間:2023年03月02日 09:15:08   作者:云牧  
這篇文章主要為大家介紹了delete?語法的本質(zhì)深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

delete 的返回值

delete 語法是用于 JS 刪除對(duì)象屬性和數(shù)組元素

返回 boolean 類型

true 代表刪除沒有發(fā)生異常,但不一定是刪除成功

false 一定是刪除失敗

var obj = {
  a: 1,
  b: 2
};
// 刪除對(duì)象屬性
console.log(delete obj.a); // true
// 刪除對(duì)象不存在的屬性
console.log(delete obj.name); // true
// 刪除全局對(duì)象 obj ,因?yàn)?var 聲明默認(rèn)會(huì)掛載到全局 window 對(duì)象上
console.log(delete obj); // false
console.log(obj); // { b: 2 }

delete 不能刪除哪些屬性

  • 任何用 var 聲明的屬性,不能從全局或函數(shù)作用域刪除
  • 任何用 let 或者 const 聲明的屬性 ,不能從它聲明的作用域刪除
  • 不可配置(configurable: false)的屬性不能刪除
// var
function testVar() {
  var a = 1;
  console.log(delete a); // false
  console.log(a); // 1
}
testVar();
// let const
function testLet() {
  let a = 2;
  console.log(delete a); // false
  console.log(a); // 2
}
testLet();
// configurable
const obj = {};
Object.defineProperty(obj, "name", { configurable: false });
console.log(delete obj.name); // false
console.log("delete undefined", delete undefined);
console.log(Object.getOwnPropertyDescriptor(global, "undefined"));
console.log("delete Infinity", delete Infinity);
console.log("delete NaN", delete NaN);

delete 刪除原型上的屬性

  • 不會(huì)遍歷原型鏈刪除
function User() {
  this.name = "云牧";
}
User.prototype.name = "黛玉";
const p = new User();
// 刪除的是 p 對(duì)象的自身屬性
console.log(delete p.name); // true
// p.name 依然可用,因?yàn)樵玩溈梢圆檎业?name
console.log(p.name); // 黛玉
// 刪除原型上的屬性
console.log(delete User.prototype.name); // true
// 實(shí)例和原型上都沒有 name
console.log(p.name); // undefined

delete 刪除的到底是什么

  • 刪除的是操作表達(dá)式結(jié)果
  • 對(duì)于值,字面量或不可達(dá)的引用,不操作,直接返回 true
  • 引用類型,刪除引用
var nameVar = "nameVar";
nameNotVar = "nameNotVar";
// var 聲明的不可以刪除
console.log(Object.getOwnPropertyDescriptor(window, "nameVar")); // configurable: false
// 非 var 聲明的可以刪除
console.log(Object.getOwnPropertyDescriptor(window, "nameNotVar")); // configurable: true

嚴(yán)格模式刪除報(bào)錯(cuò)

  • 對(duì)于 變量,函數(shù)名,函數(shù)參數(shù)SyntaxError
  • 對(duì)于 configurable: falseTypeError
  • 典型的 delete super.property :ReferenceError

下面是錯(cuò)誤的例子:

"use strict";
// 變量
var name = "name";
delete name;
// 函數(shù)和函數(shù)參數(shù)
function fn() {}
delete fn;
function fn(name) {
  delete name;
}
fm();
// configurableTypeError
const person = {
  name: "帥哥"
};
Object.defineProperty(person, "name", {
  configurable: false
});
delete person.name;
// 嚴(yán)格 refer
class 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 語法的本質(zhì)深入解析的詳細(xì)內(nèi)容,更多關(guān)于delete 語法解析的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Skypack布局前端基建實(shí)現(xiàn)過程詳解

    Skypack布局前端基建實(shí)現(xiàn)過程詳解

    這篇文章主要為大家介紹了Skypack布局前端基建過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 淺談js中的宏任務(wù)和微任務(wù)

    淺談js中的宏任務(wù)和微任務(wù)

    這篇文章我們主要談一談js中的宏任務(wù)和微任務(wù),JavaScript是一門單線程語言,即一次只能完成一個(gè)任務(wù),若有多個(gè)任務(wù)要執(zhí)行,則必須排隊(duì)按照隊(duì)列來執(zhí)行,下面我們就來簡(jiǎn)單談?wù)凧avaScript吧,需要的朋友可以參考下面文章內(nèi)容的具體內(nèi)容
    2021-09-09
  • rollup打包引發(fā)對(duì)JS模塊循環(huán)引用思考

    rollup打包引發(fā)對(duì)JS模塊循環(huán)引用思考

    這篇文章主要為大家介紹了rollup打包引發(fā)的對(duì)JS模塊循環(huán)引用的思考,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • JavaScript中MutationObServer監(jiān)聽DOM元素詳情

    JavaScript中MutationObServer監(jiān)聽DOM元素詳情

    這篇文章主要給大家分享的是?JavaScript中MutationObServer監(jiān)聽DOM元素詳情,DOM的MutationObServer接口,可以在DOM被修改時(shí)異步執(zhí)行回調(diào)函數(shù),我的理解就是可以監(jiān)聽DOM修改。下面來看看文章的詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • JavaScript原型Prototype詳情

    JavaScript原型Prototype詳情

    這篇文章主要介紹了JavaScript原型Prototype,在JavaScript中,函數(shù)是一個(gè)包含屬性和方法的Function類型的對(duì)象。而原型(Prototype?)就是Function類型對(duì)象的一個(gè)屬性。具體內(nèi)容需要的朋友可以參考下面文章的介紹
    2021-12-12
  • 微信小程序 彈幕功能簡(jiǎn)單實(shí)例

    微信小程序 彈幕功能簡(jiǎn)單實(shí)例

    這篇文章主要介紹了微信小程序 彈幕功能簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 微信小程序 用戶數(shù)據(jù)解密詳細(xì)介紹

    微信小程序 用戶數(shù)據(jù)解密詳細(xì)介紹

    這篇文章主要介紹了微信小程序 用戶數(shù)據(jù)解密詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Hardhat進(jìn)行合約測(cè)試環(huán)境準(zhǔn)備及方法詳解

    Hardhat進(jìn)行合約測(cè)試環(huán)境準(zhǔn)備及方法詳解

    這篇文章主要為大家介紹了Hardhat進(jìn)行合約測(cè)試環(huán)境準(zhǔn)備及方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 微信小程序 (三)tabBar底部導(dǎo)航詳細(xì)介紹

    微信小程序 (三)tabBar底部導(dǎo)航詳細(xì)介紹

    這篇文章主要介紹了微信小程序 (三)tabBar底部導(dǎo)航詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • quickjs 封裝 JavaScript 沙箱詳情

    quickjs 封裝 JavaScript 沙箱詳情

    這篇文章主要介紹了 quickjs 封裝 JavaScript 沙箱,在前文 JavaScript 沙箱探索 中聲明了沙箱的接口,并且給出了一些簡(jiǎn)單的執(zhí)行任意第三方 js 腳本的代碼,但并未實(shí)現(xiàn)完整的 IJavaScriptShadowbox,下面便講一下如何基于 quickjs 實(shí)現(xiàn),需要的朋友可以參考一下
    2021-10-10

最新評(píng)論