var getProperty = function(obj, propertySrc) {
var src = propertySrc.split('.');
var res = obj;
for (var i = 0, l = src.length; i < l; ++i) {
if (!(src[i] in res)) {
return void(0);
}
res = res[src[i]];
}
return res;
};
Working example:
http://jsfiddle.net/gkucmierz/5Df5D/
Pokazywanie postów oznaczonych etykietą Object. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Object. Pokaż wszystkie posty
poniedziałek, 30 czerwca 2014
get nested property of object
Function that allows to get nested property of object. If it is not defined, function will return undefined.
środa, 22 lutego 2012
getType - sprawdzenie typu, pewniejsze od typeof
Poniżej zamieszczam funkcję zwracającą typ danej. Funkcja w przeciwieństwie do operatora typeof znacznie skuteczniej oddaje typ przekazanej danej. Pomysł został zaczerpnięty z serwisu JavaScript Garden. Funkcja do sprawdzenia typu wykorzystuje generyczną funkcję toString podstawowego obiektu.
var getType = function(obj){
return ({}).toString.call(obj).slice(8, -1);
};
Poniżej szybkie sprawdzenie różnic funkcji getType oraz operatora typeof. Pomaga on uświadomić sobie, z jakimi problemami mamy do czynienia, jeśli używamy operatora typeof.
[{}, [], '', 0, 1/0, false, function(){}, /./, null, undefined].map(function(obj){
return [getType(obj), typeof obj];
});
Tak naprawdę operator typeof JavaScriptu ma tylko jedno uzasadnione zastosowanie.
typeof variable === 'undefined';
wtorek, 14 lutego 2012
Object each - iteracja po obiekcie
Poniżej zamieszczam bardzo przydatną funkcję pozwalającą w prosty sposób iterować po obiekcie.
var each = function(obj, fn){
var res = {};
for( var i in obj ){
if( obj.hasOwnProperty(i) ){
res[i] = fn.call(obj, obj[i], i);
}
}
return res;
};
Przykład zastosowania:
each({
name: 'Grzegorz',
job: 'web developer',
website: 'gkucmierz.blogspot.com'
}, function(value, key){
alert([key, ': ', value].join(''));
});
czwartek, 18 sierpnia 2011
Object implicit
Object.prototype.implicit = function(obj){
for( var i in obj ){
if( obj.hasOwnProperty(i) && typeof this[i] === 'undefined' ){
this[i] = obj[i];
}
}
return this;
};Całkiem przydatna funkcja umożliwiająca łączenie dwóch obiektów. Działa podobnie do już opisanej przeze mnie funkcji update. Różnica polega na tym, że metoda implicit nie nadpisuje już istniejących właściwości obiektu.
niedziela, 14 sierpnia 2011
Object update
Object.prototype.update = function(obj){
for( var i in obj ){
if( obj.hasOwnProperty(i) ){
this[i] = obj[i];
}
}
return this;
};Funkcja update pozwala w prosty sposób rozbudować lub nadpisać dowolne właściwości obiektu.
Ponieważ funkcja operuje na referencji do obiektu, oraz zwraca tę referencję możemy z niej skorzystać na dwa sposoby.
Pierwszy z nich polega na utworzeniu obiektu i nadpisaniu/rozszerzeniu jego metod/wartości.
var obj = {
a: 1,
b: 2
};
obj.update({
b: 3,
c: 4
});
console.log(obj);Drugi sposób to wywołanie metody update na naszym obiekcie w chwili jego utworzenia i zwrócenie na jego miejsce nowego obiektu.
var obj = {
a: 1,
b: 2
}.update({
b: 3,
c: 4
});
console.log(obj);
Subskrybuj:
Posty (Atom)