ich direkt eine Funktion aufrufen kann wie soJavascript-Funktion in einem Objekt/hash
alert("Hello World!"); // pops up an alert window
jedoch (I alert
als Beispiel verwenden werden), wenn ich eine Funktion in einem Objekt setzen, nannte es nicht mehr funktioniert:
d = {func: alert};
d.func("Hello World!"); // doesn't do anything
d["func"]("Hello World!"); // also doesn't do anything
ich vielleicht dachte ich explizit benötigt, um in einem leeren this
Argument übergeben, also versuchte ich
d.func(null, "Hello World!") // still nothing
aber ohne Erfolg. Interessanterweise tut dies
d.func.apply(null, ["Hello World!"]); // success!
arbeiten, aber das ist so grundlos ausführliche es meine Zähne (Zitat JWZ) verletzt macht. Gibt es einen prägnanteren, weniger hässlichen Weg?
Ahh, Sie scheinen richtig zu sein. Das Überprüfen der Warnung sagt mir, dass es nicht alle Eigenschaften hat, die reguläre Javascript-Objekte haben, da es "eingebaut" ist, wie Sie sagen. Vielen Dank für das Testen in Chrome und für das Erklären des Verhaltens. –
Ich habe eigentlich eine Änderung zu machen - es funktioniert nicht in Chrome ... die ganze Zeit. Der Code, genau wie Sie ihn geschrieben haben, verursacht einen ungültigen Aufruffehler. Wenn Sie jedoch einfach einen Verweis auf die Warnung im globalen Namespace vornehmen, z. B .: var myAlert = alert; myAlert ("Hallo, Welt!"); // Funktioniert! Das sieht wie kniffeliges Browserverhalten für mich aus. –