JavaScript知識點之 delete操作符

2021-08-27 12:50:00 字數 1534 閱讀 2096

delete操作符來刪除乙個隱式宣告的全域性變數,也就是沒有使用var定義的全域性變數.

如果delete操作符刪除成功, 則被delete的屬性已從所屬的物件上徹底消失, 隨後,該物件的原型上可能存在的乙個同名屬性會被繼承.

一些物件的屬性不能被delete. ecma 262 規範中把這些屬性標記為

dontdelete.

x = 42;        // 隱式宣告的全域性變數

var y = 43; // 顯式宣告的全域性變數

myobj = new number();

myobj.h = 4; // 新增屬性h

myobj.k = 5; // 新增屬性k

delete x; // 返回 true (隱式宣告的全域性變數可以被刪除)

delete y; // 返回 false (顯式宣告的全域性變數不能被刪除,該屬性有dontdelete標記)

delete math.pi; // 返回 false (內建物件的內建屬性不能被刪除, 該屬性有dontdelete標記)

delete myobj.h; // 返回 true (使用者定義的屬性可以被刪除)

with(myobj)

delete myobj; // 返回 true (隱式宣告的全域性變數可以被刪除)

你不能刪除乙個物件從原型繼承而來的屬性(不過你可以從原型上直接刪掉它).

function foo(){}

foo.prototype.bar = 42;

var foo = new foo();

delete foo.bar; // 無效的操作

alert(foo.bar); // alerts 42, 繼承的屬性

delete foo.prototype.bar; // 直接刪除原型上的屬性

alert(foo.bar); // alerts "undefined",已經沒有繼承的屬性

當你刪除乙個陣列元素時,陣列的length屬性並不會變小.當用delete操作符刪除乙個陣列元素時,被刪除的元素已經完全不屬於該陣列.

var trees = ["redwood","bay","cedar","oak","maple"];

delete trees[3];

if (3 in trees)

如果你想讓乙個陣列元素的值變為undefined而不是刪除它,可以使用undefined給其賦值而不是使用delete操作符.

var trees = ["redwood","bay","cedar","oak","maple"];

trees[3]=undefined;

if (3 in trees)

Javascript常見知識點

jquery d ocum ent rea dy 與win dow.onlo ad的區 別1.執行 時間wi ndow onl oad必 須等到頁 麵內包括 的所 有元素加 載完畢後 才能執行 document ready 是dom結構繪製完畢後就執行,不必等到載入完畢。2.編寫個數不同 windo...

javascript知識點彙總

function vartest console.log x 2 function lettest console.log x 1 var arr1 new array a b c 這是乙個預定義的陣列,在建立時初始化 var arr2 a b c 同樣是在建立時初始化,但是這種建立更為簡潔直觀 v...

javascript知識點 作用域

理解作用域,重要的是理解 js 解釋 的規範,js 在解釋 的時候會執行這2個步驟 預解釋js 會對 var function 引數做乙個預解釋,儲存起來 逐行解釋 完成預解釋後,會逐行解釋 例子1console.log a var a 1執行上面的 輸出的是 undefined跟著上面的步驟走就是...