Aktywne Wpisy
Urynowyurynator +20
Treść przeznaczona dla osób powyżej 18 roku życia...

janeeyrie +20
Dobra mirki, mam ostatnio taką głupią rozkminę, bo niby nie wolno mówić "masło maślane", bo to błąd językowy, tautologia itp. Ale już "oliwa z oliwek" jest nagle okej i nikt się nawet nie zająknie. Przecież to jest bez sensu.
#kiciochpyta #heheszki
#kiciochpyta #heheszki





Mały wieczorny quiz :> łatwy w sumie. Mamy sobie taki oto fragment kodu:
var x = {0: "bar"};var y = ["bar"];Tablice w JS to, jak wszyscy wiemy, po prostu obiekty, które jednak różnią się ciutkę od obiektów - przede wszystkim wewnętrzną właściwością [[Class]], która sprawia, że
Object.prototype.toString.call(x)>"[object Object]"Object.prototype.toString.call(y)>"[object Array]"ale także niektóre metody nie zadziałają na zwykłych obiektach
Array.prototype.slice.call(x,0)>[ ]Array.prototype.slice.call(y,0)>["bar"]Wypiszmy obie zmienne w konsoli
console.log(x)>Object {0: "bar"}console.log(y)>["bar"]Różnica jest, nie da się ukryć.
Teraz zdefiniujmy obiekt x1, którego definicję ukryję, bo inaczej cały quiz nie miałby sensu :>
var x1 = /* tutaj dzieje sie magia */;x1 jest nadal "tylko" obiektem, co potwierdza zbadanie właściwości [[Class]]
Object.prototype.toString.call(x1)>"[object Object]"ale, ale, zaraz!
Array.prototype.slice.call(x1,0)>["bar"]console.log(x1)>["bar"]Magia! Teraz pytanie: co takiego stało się z obiektem x1, ze parser widzi go jako tablicę? Odpowiedź w spoilerze poniżej
okazuje się, że wystarczy do obiektu dodać własności length (number) i splice (function), żeby stał się on array-like object, który zachowuje się jak tablica, mimo że w sumie nie jest tablicą. Przykładowe, praktyczne zastosowania? Niestety, nie umiem żadnych wymyślić na szybko :< natomiast warto wiedzieć, że takim właśnie array-like objectem jest chociażby obiekt arguments, tworzony przy każdym wywołaniu prawie dowolnej funkcji (wyjątkami są funkcje które mają zadeklarowane zmienne lokalne o nazwie arguments lub parametr o takiej nazwie), są nimi kolekcje zwracane przez API DOM czy obiekt zwracany przez selektor jQuery (od którejś tam wersji jeśli dobrze pamiętam). No, to tyle, trudne to w sumie nie było :D
W połaczeniu z pluginami to do webdevu w sumie spokojnie wystarczy, ale ogólnie nigdy nie rozumiałem idei uczenia się frameworka, jeśli się nie zna języka. No ale to
@Marmite: to świetnie bo właśnie ją mam :)