valor - typeof javascript




Como verificar se a propriedade do objeto existe com uma variável que contém o nome da propriedade? (4)

Obrigado pela ajuda de todos e empurrando para se livrar da declaração eval. Variáveis ​​necessárias para estar entre parênteses, não notação de ponto. Isso funciona e é um código limpo e adequado.

Cada uma dessas variáveis ​​é: appChoice, underI, underObstr.

if(typeof tData.tonicdata[appChoice][underI][underObstr] !== "undefined"){
    //enter code here
}

Esta questão já tem uma resposta aqui:

Eu estou verificando a existência de uma propriedade de objeto com uma variável mantendo o nome da propriedade em questão.

var myObj;
myObj.prop = "exists";
var myProp = "p"+"r"+"o"+"p";

if(myObj.myProp){
    alert("yes, i have that property");
};

Isso é undefined porque está procurando por myObj.myProp mas eu quero verificar se há myObj.prop


Para propriedade própria:

var loan = { amount: 150 };
if(Object.prototype.hasOwnProperty.call(loan, "amount")) 
{ 
   //will execute
}

Nota: usar Object.prototype.hasOwnProperty é melhor que loan.hasOwnProperty (..), no caso de um hasOwnProperty customizado ser definido na cadeia de protótipos (que não é o caso aqui), como

var foo = {
      hasOwnProperty: function() {
        return false;
      },
      bar: 'Here be dragons'
    };

// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

Para incluir propriedades herdadas na descoberta use o operador in : (mas você deve colocar um objeto no lado direito de 'in', os valores primitivos lançarão um erro, por exemplo, 'comprimento' em 'home' causará erro, mas 'length' na nova String ('home') não vai)

const yoshi = { skulk: true };
const hattori = { sneak: true };
const kuma = { creep: true };
if ("skulk" in yoshi) 
    console.log("Yoshi can skulk");

if (!("sneak" in yoshi)) 
    console.log("Yoshi cannot sneak");

if (!("creep" in yoshi)) 
    console.log("Yoshi cannot creep");

Object.setPrototypeOf(yoshi, hattori);

if ("sneak" in yoshi)
    console.log("Yoshi can now sneak");
if (!("creep" in hattori))
    console.log("Hattori cannot creep");

Object.setPrototypeOf(hattori, kuma);

if ("creep" in hattori)
    console.log("Hattori can now creep");
if ("creep" in yoshi)
    console.log("Yoshi can also creep");

// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in

Nota: Pode-se ficar tentado a usar typeof e [] property accessor como o seguinte código que não funciona sempre ...

var loan = { amount: 150 };

loan.installment = undefined;

if("installment" in loan) // correct
{
    // will execute
}

if(typeof loan["installment"] !== "undefined") // incorrect
{
    // will not execute
}

Você pode usar hasOwnProperty() , bem como in operador.






object