javascript delete 使用範例程式碼

來源:互聯網
上載者:User

javascript delete example 複製代碼 代碼如下:var flower={};
flower.name="oop";
delete flower.name; //true
alert(flower.name); //undefined

  建立一個名為flower的對象
  flower具有成員name,值"oop";
  delete 操作 刪除這個成員
  刪除成功,已不存在flower.name這個成員
javascript delete example 2 複製代碼 代碼如下: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.並沒有刪除成功 變數依然存在;
注意:delete僅在刪除一個不能刪除的成員是,才會返回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 不能刪除 用函數名申明的函數
不能刪除繼承自原型的成員 複製代碼 代碼如下: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"

   a1是flower的執行個體,通過執行個體來刪除原型的和父類的成員是不可行的~
  如果一定要刪除該屬性("這裡以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
不同瀏覽器器之間的差異 複製代碼 代碼如下:(function(){
delete arguments; // false ,而在Mozilla中返回的是true
typeof arguments; // "object"
})();

巧妙的利用eval刪除var 申明的變數 複製代碼 代碼如下: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後的全域變數,變得不具備DontDelete特性,可以用eval刪除;
最後補充一條神奇的~睡覺前剛測試
window.flower=1;
delete flower 時對象會不支援此操作
我們可以用 with(window){flower=1}; 然後 delete flower (記住是delete flower,不是delete window.flower ,ie不允許那麼做)
這樣 window.flower就被刪除了 :)

JavaScript delete操作符應用執行個體

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.