Hayır; Eğer sonradan new
önceden ve .something
eklerseniz onlar farklı olacaktır,
Ancak aynıdır.
Kod 1
new (function() {
this.prop = 4;
})().prop;
Bu kod ardından yeni örneğinin prop
mülklerini, bu işlevin sınıfının yeni bir örneğini oluşturur.
4
döndürür.
O eşdeğer 2
new (function() {
return { Class: function() { } };
}()).Class;
Kod
function MyClass() {
this.prop = 4;
}
new MyClass().prop;
için bu kod
Class
mülkiyet
new
çağırır.
İşlev çağrısının parantezleri dış parantez kümesinin içinde olduğu için,
new
ifadesi tarafından alınmazlar ve bunun yerine normal olarak işlevi döndürerek dönüş değerini döndürürler.
ifadesi,
.Class
ifadesini ayrıştırır ve bunu örneklendirir. o
getNamespace
sınıf örneğini arayıp
Class
özelliği dönecekti —
(new getNamespace()).Class
olarak (
new
sonra parantezler isteğe bağlıdır)
O getNamespace()
çağrısına etrafında parantez olmadan
var namespace = { Class: function() { } };
function getNamespace() { return namespace; }
new (getNamespace()).Class;
//Or,
new namespace.Class;
eşdeğer olduğunu, bu çözümlenen yeni örneğin
Ayrıca bkz. [Anonim JavaScript işlevlerini otomatik yürütmek için parantezin konumu nedir?] (Http://stackoverflow.com/questions/3384504/location-of-parenthesis-for-auto-executing-anonymous-javascript-functions) veya [(Function() {…}()) arasında bir fark var mı? ve (function() {…})();?] (http://stackoverflow.com/questions/3783007/is-there-a-difference-between-function-and-function) – Bergi
JS umduğun gibi değil - öyle. tekrar kandırdın! js ilk dil ters piskoloji kullanmak için !!! –