SORU
2 Temmuz 2009, PERŞEMBE


IE penceresinde bir özellik silme

Bu konuda herhangi bir bilgi; neden YANİ aşağıdaki kod çalışmıyor mu? bulamıyorum

window.x = 45;
delete window.x;
// or delete window['x'];

YANİ raporlar bir "nesne bu eylemi desteklemiyor" hata. Bununla bir ilgisi IE sorun penceresinde özellikleri üzerinden yineleme var mı?

CEVAP
1 Aralık 2009, Salı


Gasper üzerinde bitirdi çözümü ile ilgili bir yorum yaptı, ama onun değer gerçek bir cevap olarak seslendiğini düşünüyorum

try 
{ 
    delete window.x; 
} 
catch(e) 
{ 
    window["x"] = undefined; 
}

İlginç bir sorun, sadece karşı başım bu gece yatıyordum. Bu durum IE atılmış ancak Firefox. Bu geçici bellek sızdırıyor şüpheli, idareli kullanmak istiyorum.

Sordum, neden sadece tanımsız ata değil mi? Eğer anahtarları daha sonra (eğer geçici güvenerek iseniz rağmen, anahtar numaralandırma hala ne istiyorsun olmaz...). numaralandır istersen önemli Ama her neyse, silmek arasındaki farkı vurgulamak için ve sadece tanımsız (http://jsfiddle.net/fschwiet/T4akL/) atama:

var deleted = {
    a: 1
};

var cleared = {
    a: 1
};

delete deleted["a"];
cleared["a"] = undefined;

for(var key in deleted) {
    console.log("deleted has key", key);
}

for(var key in cleared) {
    console.log("cleared has key", key);
}

console.log("deleted has a?", deleted.hasOwnProperty('a'));
console.log("cleared has a?", cleared.hasOwnProperty('a'));

çıktısı üretir:

cleared has key a
deleted has a? false
cleared has a? true 

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008
  • martin shervington

    martin sherv

    7 EKİM 2011
  • Mr_BrettHooge

    Mr_BrettHoog

    3 Ocak 2011