Odpowiedziałem jedno pytanie o zamknięciach tutaj w SO z tej próbki:tworzenie obiektów z zamykania JS: czy powinienem używać słowa kluczowego "nowy"?
function Constructor() {
var privateProperty = 'private';
var privateMethod = function(){
alert('called from public method');
};
return {
publicProperty: 'im public',
publicMethod: function(){
alert('called from public method');
},
getter: privateMethod
}
}
var myObj = new Constructor();
//public
var pubProp = myObj.publicProperty;
myObj.publicMethod();
myObj.getter();
//private - will cause errors
myObj.privateProperty
myObj.privateMethod
użytkownik skomentował moją odpowiedź mówiąc:
Ponadto jeśli funkcja wyraźnie zwraca obiekt nie jest dobry praktykować to nazwać z nowego bo to jest mylące - w przypadku korzystania z nowego można się spodziewać wynikiem będzie instancją Konstruktora
Zwykle tworzę obiekty używając nowy. ale dlaczego nie jest to dobra praktyka? wydaje się, że używanie nowych i niewykorzystywanie nowych zwraca tę samą rzecz. jaki jest właściwy sposób tworzenia obiektów z zamknięć?
na przykład: http://jsfiddle.net/DZTC8/1/ oba zwracają to samo, z lub bez 'nowego' – Joseph
@Joseph: Chodzi mi o to, że sprawia, że' instanceof' działa dziwnie. Zwrócony obiekt * nie jest instancją konstruktora *, jak oczekiwałby użytkownik, ale raczej tylko Obiektem. – Ryan
+1 dla "dziwnego". dzięki! teraz mam pomysł. – Joseph