Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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?
stellatus
post 24.07.2020, 16:56:07
Post #1





Grupa: Zarejestrowani
Postów: 196
Pomógł: 0
Dołączył: 9.03.2017

Ostrzeżenie: (0%)
-----


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 ]

Go to the top of the page
+Quote Post
nospor
post 24.07.2020, 17:00:14
Post #2





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
stellatus
post 24.07.2020, 17:20:57
Post #3





Grupa: Zarejestrowani
Postów: 196
Pomógł: 0
Dołączył: 9.03.2017

Ostrzeżenie: (0%)
-----


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?

Ten post edytował stellatus 24.07.2020, 17:37:45
Go to the top of the page
+Quote Post
trueblue
post 24.07.2020, 18:02:52
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


https://stackoverflow.com/questions/2787245...alues-in-itself


--------------------
Go to the top of the page
+Quote Post
stellatus
post 24.07.2020, 21:38:45
Post #5





Grupa: Zarejestrowani
Postów: 196
Pomógł: 0
Dołączył: 9.03.2017

Ostrzeżenie: (0%)
-----


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']
}

Go to the top of the page
+Quote Post
trueblue
post 25.07.2020, 06:28:28
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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);




--------------------
Go to the top of the page
+Quote Post
stellatus
post 25.07.2020, 12:37:09
Post #7





Grupa: Zarejestrowani
Postów: 196
Pomógł: 0
Dołączył: 9.03.2017

Ostrzeżenie: (0%)
-----


Nie wiedziałem, że to new function() tworzy nowy obiekt. Ciekawe. Dzięki za pomoc.

Ten post edytował stellatus 25.07.2020, 13:16:15
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 13:19