首頁  >  文章  >  web前端  >  javascript delete 使用範例程式碼

javascript delete 使用範例程式碼

高洛峰
高洛峰原創
2017-01-20 10:52:051423瀏覽

javascript delete example 

var flower={}; 
flower.name="oop"; 
delete flower.name; //true 
alert(flower.name); //undefined

  創建一個名為flower的物件 
  flower具有成員name,值"oop"; 
 del delete 操作刪除這個成員name,值"oop"; 
 del delete 操作刪除這個成員 

alert(isNaN(5)); //false 
delete isNaN; //true 
alert(isNaN(5)); //undefined

  delete 操作符甚至可以刪除全域物件Global的成員 

不能刪除var 申明的變數 

var flower="monkey"; 
delete flower; //false 
alert(flower); // "monkey"

  用var 申明的變數,delete 後返回false.並沒有刪除成功變數依然存在;刪除的成員是,才會回傳false 

ie下不能刪除宿主物件下的變數在ie瀏覽器下 

window.flower="monkey"; 
delete flower; //抛出异常 
alert(flower);

在ff瀏覽器下 

window.flower="monkey"; 
delete flower; //true 
alert(flower) //undefined

  可以看到delete window的成員時,瀏覽器表現不一致〠瀏覽器表現不一致〜window是javascript的宿主物件 

  宿主物件可以是javascript執行環境自己定義的 

  在ie6-8瀏覽器中,不能delete window.flower,瀏覽器會提示你"物件不支援該操作",也就是不能刪除window成員 
不能刪除用函數名稱申明的函數 

function flower(){} 
delete flower; //true 
alert(flower);//undefined

  結果顯示delete 不能刪除用函數名稱申明的函數 
  結果顯示delete 不能刪除用函數名申明的函數 

不能刪除繼承自原型的成員 

function flower(){}; 
flower.prototype.name="monkey"; 
var a1=new flower(); 
a1.name="a1_monkey" 
alert(a1.name);//"a1_monkey" 
delete a1.name;//ture 
alert(a1.name);//"monkey"

不能刪除繼承自原型的成員 

(function(){ 
delete arguments; // false ,而在Mozilla中返回的是true 
typeof arguments; // "object" 
})();


a1是flower  a1是通過原型的實例來刪除的成員是不可行的~ 
  如果一定要刪除該屬性("這裡以name為例"),只能對原型進行操縱 
delete a1.constructor.prototype.name; 
DontDelete 特性delete 不能刪除具有DontDelete特徵的成員 
那什麼是具有DontDelete特性的成員呢 
例如var 申明的變量,函數名申明的函數,Function對象的length等極少數幾個擁有DontDelete特性 
delete 返回值false or true
delete刪除的成員時,才會回傳false 
而其他情況下,刪除如不存在的成員,或刪除成功也會返回ture 
也就是說返回true 並不一定代表刪除成功 
  : 執行程式碼alert(delete a ); // true 

a是一個未申明且不存在的變數。 delete 依然返回的是true 

不同瀏覽器器之間的差異 

eval('var flower = 1'); 
alert(window.flower) //1 
alert(flower)// 1 
delete flower; // true 
alert(flower); // "undefined" 
var a=function(){}; 
eval('var a = function(){}'); 
delete a; // true 
alert(a); // "undefined"

巧妙的利用eval刪除var 申明的變量 
rrreee
eval後的全局變量,變得不具備DontDeleteete特性,可以用evalred 
eval後的全局變量,變得不具備DontDeleteete特性,可以用evalred 補充一條神奇的~睡前剛測試 
window.flower=1; 
delete flower 時對象會不支持此操作 

我們可以用with(window){flower=1}; 然後delete flower ( 然後是delete flower,不是delete window.flower ,ie不允許那麼做) 

這樣window.flower就被刪除了:) 

🎜更多javascript delete 使用範例程式碼相關文章請關注PHP中文網! 🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn