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跟著上面的步驟走就是...