Я хотел бы знать, если мой код приближается хорошо, я хотел бы:Лучшая практика, когда объект не определен, если - еще
- Проверить, если объект существует
- Если не существует создать его и назначить это свойство
- Если уже существую просто присвоить свойства
, что у меня сейчас есть код следовать, но я не люблю писать два раз в ту же строку
function doSomething(_whatever){
if(typeof someobject === "undefined"){
someobject = { //dont exist
profile : "some value",
status : []
}
someobject.status.push(_whatever);
}else{
someobject.status.push(_whatever); //because already exist
}
}
Что такое лучший способ написать этот фрагмент? или сделать это лучше и менее повторяющимся?
заранее спасибо
------ оригинальная функция
function addPerson(_person){
var people = Iee.dashboard.analytics.data.people.data;
if(typeof people[_person.Id_Emp] === "undefined"){
people[_person.Id_Emp] = {
profile : _person,
status : []
}
people[_person.Id_Emp].status.push({Id_Emp : _person.Id_Emp, status : _person.Estatus1, estatusby : _person.Centro_de_trabajo});
}else{
people[_person.Id_Emp].status.push({Id_Emp : _person.Id_Emp, status : _person.Estatus1, estatusby : _person.Centro_de_trabajo});
}
addBlackList(_person);
}
(не исправить вашу проблему, но только предложение) - Удалить файл 'else' и положить' someobject.status.push (_whatever) ; 'сразу после' if'. Он должен быть выполнен независимо от того, зачем дублировать эту строку? – Ian
Вы не знаете, существует ли объект. Поэтому, если код выполняет эту строку и объект не существует, это приведет к сбою браузера, потому что объект не определен ... – ncubica
Обратите внимание, что ваш первый и второй фрагменты совершенно разные. В первом вы проверяете существование _объекта_, во втором - если объект ('people') имеет определенный _property_. Для этой цели Javascript имеет [выделенный оператор] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/in). – georg