第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

你好,有了解在javascript中的delete方法的嗎?

你好,有了解在javascript中的delete方法的嗎?

慕桂英3389331 2022-04-03 13:09:29
javascript中的delete方法作用請高人解釋以下它的用處和如何使用?
查看完整描述

1 回答

?
天涯盡頭無女友

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊

delete 運(yùn)算符
從對象中刪除一個(gè)屬性,或從數(shù)組中刪除一個(gè)元素。

delete expression

expression 參數(shù)是一個(gè)有效的 JScript 表達(dá)式,通常是一個(gè)屬性名或數(shù)組元素。

說明
如果 expression 的結(jié)果是一個(gè)對象,且在 expression 中指定的屬性存在,而該對象又不允許它被刪除,則返回 false。

在所有其他情況下,返回 true。

要求
版本 3

Javascript的變量與delete操作符
版權(quán)聲明:可以任意轉(zhuǎn)載,但轉(zhuǎn)載時(shí)必須標(biāo)明原作者charlee、原始鏈接http://tech.idv2.com/2008/01/09/javascript-variables-and-delete-operator/以及本聲明。

剛剛看到一篇好文(原文鏈接),對Javascript中的delete操作符分析得很透徹。在這里簡單地介紹一下內(nèi)容。

雖然是一個(gè)小小的delete操作符,其行為卻異常復(fù)雜。

Javascript的變量
delete操作符刪除的對象
對變量執(zhí)行delete的情況
能刪除的屬性和不能刪除的屬性
能刪除的變量和不能刪除的變量
delete的返回值

--------------------------------------------------------------------------------

Javascript的變量
實(shí)際上Javascript中,變量 = 對象屬性,這是因?yàn)?Javascript 在執(zhí)行腳本之前會創(chuàng)建一個(gè)Global對象,所有的全局變量都是這個(gè)Global對象的屬性,執(zhí)行函數(shù)時(shí)也會創(chuàng)建一個(gè)Activation對象,所有的局部變量都是這個(gè)Activation對象的屬性。如下例:

var global = 42;
this.global; // 42, 可以通過this來訪問Global對象

this.global2 = 12;
global2; // 12

function foo() {
var local = 36;
// 不過無法直接訪問Activation,
// 因此無法通過 foo.local 的方式來訪問local變量
}delete操作符刪除的對象
C++中也有delete操作符,它刪除的是指針?biāo)赶虻膶ο?。例如?br/>
// C++
class Object {
public:
Object *x;
}

Object o;
o.x = new Object();
delete o.x; // 上一行new的Object對象將被釋放但Javascript的delete與C++不同,它不會刪除o.x指向的對象,而是刪除o.x屬性本身。

// Javascript
var o = {};
o.x = new Object();
delete o.x; // 上一行new的Object對象依然存在
o.x; // undefined,o的名為x的屬性被刪除了在實(shí)際的Javascript中,delete o.x之后,Object對象會由于失去了引用而被垃圾回收,所以delete o.x也就“相當(dāng)于”刪除了o.x所指向的對象,但這個(gè)動作并不是ECMAScript標(biāo)準(zhǔn),也就是說,即使某個(gè)實(shí)現(xiàn)完全不刪除Object對象,也不算是違反ECMAScript標(biāo)準(zhǔn)。

“刪除屬性而不是刪除對象”這一點(diǎn),可以通過以下的代碼來確認(rèn)。

var o = {};
var a = { x: 10 };
o.a = a;
delete o.a; // o.a屬性被刪除
o.a; // undefined
a.x; // 10, 因?yàn)閧 x: 10 } 對象依然被 a 引用,所以不會被回收另外,delete o.x 也可以寫作 delete o["x"],兩者效果相同。

對變量執(zhí)行delete的情況
由于變量也是 Global 或者是 Activation 對象的屬性,所以對變量的delete操作也是同樣的結(jié)果。

var global = 42;
delete global; // 刪除Global.global

function foo() {
var local = 36;
delete local; // 刪除Activation.local
}能刪除的屬性和不能刪除的屬性
并不是所有的屬性都能被delete。例如,prototype中聲明的屬性就無法被delete:

function C() { this.x = 42; }
C.prototype.x = 12;

var o = new C();
o.x; // 42, 構(gòu)造函數(shù)中定義的o.x

delete o.x;
o.x; // 12, prototype中定義的o.x,即使再次執(zhí)行delete o.x也不會被刪除對象的預(yù)定義屬性也無法刪除。 可以認(rèn)為這類屬性帶有DontDelete的特性。

var re = /abc/i;
delete re.ignoreCase;
re.ignoreCase; // true, ignoreCase無法刪除能刪除的變量和不能刪除的變量
通過var聲明的變量和通過function聲明的函數(shù)擁有DontDelete特性,無法被刪除。

var x = 36;
delete x;
x; // 36, x沒有被刪除

y = 12;
delete y;
y; // undefined

function foo() { return 42; }
delete foo;
foo(); // 42但是有一點(diǎn)例外,就是通過 eval 執(zhí)行的代碼中,通過var聲明的變量雖然與正常的var聲明變量同屬于Global對象,但它們不具有DontDelete特性,能被刪除。

eval("var x = 36;");
x; // 42
delete x;
x; // undefined但是這也有一點(diǎn)例外,eval的代碼中的函數(shù)內(nèi)通過var定義的變量具有DontDelete,不能被刪除。

eval("(function() { var x = 42; delete x; return x; })();");
// 返回 42delete的返回值
delete是普通運(yùn)算符,會返回true或false。規(guī)則為:當(dāng)被delete的對象的屬性存在并且擁有DontDelete時(shí)返回false,否則返回true。這里的一個(gè)特點(diǎn)就是,對象屬性不存在時(shí)也返回true,所以返回值并非完全等同于刪除成功與否。

function C() { this.x = 42; }
C.prototype.y = 12;
var o = new C();

delete o.x; // true
o.x; // undefined
"x" in o; // false
// o.x存在并且沒有DontDelete,返回true

delete o.y; // true
o.y; // 12
// o自身沒有o.y屬性,所以返回true
// 從這里也可以看到prototype鏈的存在,對象自身屬性和prototype屬性是不同的

delete o; // false
// Global.o擁有DontDelete特性所以返回false

delete undefinedProperty; // true
// Global沒有名為undefinedProperty的屬性因此返回true

delete 42; // true
// 42不是屬性所以返回true。有的實(shí)現(xiàn)會拋出異常(違反ECMAScript標(biāo)準(zhǔn))

var x = 24;
delete x++; // true
x; // 25
// 被刪除的是x++的返回值(24),不是屬性,所以返回true



查看完整回答
反對 回復(fù) 2022-04-07
  • 1 回答
  • 0 關(guān)注
  • 216 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號