Jestem trochę mylony z deleteoperatorem JavaScript . Weź następujący fragment kodu:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
Po wykonaniu tego fragmentu kodu objjest null, ale foonadal odnosi się do obiektu dokładnie takiego jak obj. Zgaduję, że ten obiekt jest tym samym obiektem, który foowskazywał.
To mnie dezorientuje, ponieważ spodziewałem się, że pisanie delete objusunie obiekt objwskazany w pamięci - nie tylko zmienną obj.
Czy to dlatego, że moduł czyszczenia pamięci JavaScript działa na zasadzie zatrzymania / wydania, więc jeśli nie miałbym żadnych innych zmiennych wskazujących na obiekt, zostałby on usunięty z pamięci?
(Nawiasem mówiąc, moje testy zostały wykonane w Safari 4.)
var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;obiekt nie jest usuwany sprawdź objusuń użycie: delete obj.helloTexta następnie sprawdźfoo now foo is an empty object
deletenie służy do usuwania obiektów w javascript. deleteSłuży do usuwania klucza obiektu. W twoim przypadku var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;obiekt nie jest usuwany. Sprawdź obj. Następnie uruchom delete obj.helloTexti widać, że footeraz wskazuje na pusty obiekt. ”„ ”