, property in object && & typeof obj[property] == 'object', typeof . , obj.property , typeof undefined.
, , , , - :
function isObject(o) {
return typeof o == 'object' && o !== null;
}
, , , :
function getChecklistUrl() {
if(isObject(dataLayerObject) &&
isObject(dataLayerObject.config) &&
isObject(dataLayerObject.config.checklist)) {
return dataLayerObject.config.checklist;
}
return null;
}
var dataLayerObject = {
config: {
checklist: ['array of stuff']
}
}
function isObject(o) {
return typeof o == 'object' && o !== null;
}
function getChecklistUrl() {
if (isObject(dataLayerObject) &&
isObject(dataLayerObject.config) &&
isObject(dataLayerObject.config.checklist)) {
return dataLayerObject.config.checklist;
}
return null;
}
console.log(getChecklistUrl()[0]);
Hide result, IMHO.
- getter , null, :
function getObjProperty(obj, propString) {
if(!isObject(obj) || !propString || typeof propString != 'string') {
return null;
}
var props = propString.split('.');
for (var i = 0, l = props.length; i < l; i++) {
var p = props[i];
if(!isObject(obj[p])) { return null; }
obj = obj[p];
}
return obj;
}
: getObjProperty(dataLayerObject, 'config.checklist');
var dataLayerObject = {
config: {
checklist: ['array of stuff']
}
};
function isObject(o) {
return typeof o == 'object' && o !== null;
}
function getObjProperty(obj, propString) {
if (!isObject(obj) || !propString || typeof propString != 'string') {
return null;
}
var props = propString.split('.');
for (var i = 0, l = props.length; i < l; i++) {
var p = props[i];
if (!isObject(obj[p])) {
return null;
}
obj = obj[p];
}
return obj;
}
console.log(getObjProperty(dataLayerObject, 'config.checklist'));
Hide result
. , hasOwnProperty, , , , .
.