Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Mam tablicę, która jest właściwością obiektu. Jak odwołać się w tej tablicy do innych właściwości i metod tego obieku?
Forum PHP.pl > Forum > Przedszkole
stellatus
Mam tablicę, która jest właściwością obiektu. Jak odwołać się w tej tablicy do innych właściwości i metod tego obieku? Dlaczego to nie działa?

Kod
var car = {
    brand : "Mercedes",
    color : "czerwony",
    showText() {
        console.log('hello')
    },
    array: ['a', 'b', this.color, this.showText]
}

console.log(car.array);


Uzyskuję: Array(4) [ "a", "b", undefined, undefined ]

nospor
No i niby czemu to ma dzialac? this odnosi sie do obiektu w ktorym jest a tam this jest w blizej niezdefiniowanym obiekcie. this tam w zadnym razie nie donosi sie do zmiennej car bo i niby czemu mialby?
stellatus
1) Jeśli tablica w JS jest obiektem, to rozumiem, że 'this' użyte w tablicy odnosi się do tej tablicy, zgadza się?
2) No więc da się to zrobić w obrębie obiektu, czy trzeba tablicę przenieść poza obiekt?

Kod
var car = {
    brand : "Mercedes",
    color : "czerwony",
    showText() {
        console.log('hello')
    }
}

var array = ['a', 'b', car.color, car.showText]


Może jeszcze podam kontekst problemu. Mam taki działający kod w projekcie:
Kod
navigationHidableReferences = (a, b, d, e, f, g) => {
    nextBtn.style.display = a;
    prevBtn.style.display = b;
    galleryTopDiv.style.cursor = d;
    thumbsDiv.style.cursor = e;
    iconBar.style.display = f;
    thumbnailsIconDiv.style.display = g;
};

const showWholeNavigation = [
    'flex',
    'flex',
    'grab',
    'grab',
    'flex',
    'flex',
    navigationHidableReferences,
];

resetTimer = (a, b, d, e, f, g, navigationHidableReferencesCallback) => {
    navigationHidableReferencesCallback(a, b, d, e, f, g);
    clearInterval(timer);
    currSeconds = 0;
    timer = setInterval(startIdleTimer, 1000);
};

startIdleTimer = () => {
    currSeconds += 1;
    if (currSeconds === 5) {
        navigationHidableReferences('none', 'none', 'none', 'none', 'none', 'none');
    }
};


Kod powoduje, że po 5 sekundach braku aktywności myszy znika nawigacja. Chciałbym go uporządkować tworząc jeden obiekt. Czy taki pomysł ma w ogóle sens?
stellatus
Sorry, ale nie rozumiem w jaki sposób te informacje miałyby odpowiadać na moje pytanie. Tam o tablicach nic nie ma. Mam tablicę, która jest właściwością obiektu. Czy odwołania do właściwości obiektu mogą stanowić elementy tej tablicy? Jeżeli tak, to jak to napisać?

Kod
var car = {
    brand : "Mercedes",
    color : "czerwony",
    showText() {
        console.log('hello')
    },
    array: ['a', 'b', 'odwołanie do car.color', 'odwołanie do car.showText']
}

trueblue
Jest dokładnie opisany Twój problem i kilka rozwiązań.

  1. var car = new function() {
  2. this.brand = "Mercedes";
  3. this.color = "czerwony";
  4. this.showText = function() {
  5. console.log('hello')
  6. };
  7. this.array = ['a', 'b', this.color, this.showText()]
  8. }
  9.  
  10. alert(car.array);


  1. var car = {
  2. brand : "Mercedes",
  3. color : "czerwony",
  4. showText() {
  5. console.log('hello')
  6. }
  7. }
  8.  
  9. car.array = ['a', 'b', car.color, car.showText()];
  10.  
  11. alert(car.array);


stellatus
Nie wiedziałem, że to new function() tworzy nowy obiekt. Ciekawe. Dzięki za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.