2009-11-03 15 views
6

tanımlanmamış:window.toString.call IE8

window.toString.call("") 

her şey yolunda CH FF/ama IE8 Eğer komut dosyası hatası alıyor. Daha fazla ortaya çıktığında, window.toString.call IE8'de tanımlanmamış mı?

window.toString instanceof Function; 
// false 

alert(window.toString); 
// function toString() { 
// [native code] 
// } 

Neden ve nasıl çözmek edilir:

Ayrıca bu bir çalıştırabilir

? JQuery'nin ilk etapta nasıl çalıştığını merak etmeye başladım?

+0

Bu arada, Firefox'ta window.toString.call ("") 'yi kullandığımda," null "değerini döndürür. Ayrıca, Object.prototype.toString.call ("") ', beklendiği gibi oldukça fazla olan' [object String] 'dizesini döndürür. Aslında yapmaya çalıştığın şeyi açıklamaya yardımcı olabilir. – NickFitz

cevap

14

window, bir ana makine nesnesidir ve ECMAScript Language Specification (3rd edition), yerel Object nesnesinden türetilecek ana makine nesneleri gerektirmez. IE'de (ve muhtemelen diğer bazı tarayıcılarda) ana makine nesneleri değildir, bu nedenle yerel yöntemlerden veya özelliklerden herhangi birini desteklemezler (ancak yerel yöntemlerle aynı özelliklere sahip yöntemler veya özellikler içerebilirler. senaryo).

Tek yapmanız gereken, dil uygulamasının varsayılan yerel toString yöntemini almaksa, Object.prototype.toString.call("") kullanmalısınız.

+0

Harika cevap @NickFitz, teşekkürler ... –

1

NickFitz doğrudur, sen buluyorlar konak nesne üzerinde toString metodu tamamen olduğunu böylece eğer

uyarısı (pencere) yaptıysam;

Metin alacağı [nesne] modernleşmek olur senin örneklerde kullanılan javascript yöntem toString() doğru yolu olduğunu çalışıyoruz ne yapacağını böylece bir dizeden bir dize yapmaktır Tüm bu

;

var a =new String (""); 

veya basitçe

var b = ""; 

yoksa gerçekten aptal olmak istiyorsanız;

var b = "".toString(); 
+1

Yanıtın konumu seçilen sıralamaya ve o ana kadar verilen oy sayısına bağlı olduğundan diğer yanıtlara "yukarısı" veya "aşağıya" atıfta bulunmaktan kaçının. Bunun yerine cevabın permalink sağlamaya çalışın. Mutlak bir URL yerine sadece bağlantıyı kullanabileceğinizi düşünüyorum. Örneğin, [1]: # 1669142 –

+0

Cool, bunu yaptın. –