2016-11-03 3 views
-3

Например,Есть ли способ переопределить способ возврата объекта JavaScript при вызове?

var a = {prop1:'asd',prop2:'zxc'}; 
console.log(a); 

и предполагаемый возврат только один из собственности и не все показали, как

{prop1:'asd'} // or just asd 

Selective свойство показываются только, не проходя через

a.prop1 

, но только

a 
+1

Не могли бы вы объяснить свой вопрос лучше? –

+1

Почему вы ожидаете 'console.log (a)' НЕ показывать вам, что на самом деле находится в 'a'? * –

+1

Посмотрите http://stackoverflow.com/questions/6307514/is-it-possible- to-override-javascripts-tostring-function-to-обеспечить-meanfu - это то, что вы ищете? – anregen

ответ

0

Вы можете просто delete свойство из объекта с помощью

delete a.prop2; 
// or 
delete a['prop2']; 
console.log(a); 
// output will be {prop1: 'asd'} 

Если вы используете ES6 вы можете использовать встроенные Reflect объекта для удаления свойства объекта с помощью вызова функции Reflect.deleteProperty() с целевым объектом и ключевое свойство в качестве параметров:

Reflect.deleteProperty(a, 'prop2'); 
0

Из того, что я могу собрать ... Вы могли бы создать функцию, которая принимает объект и ключ, 2 аргументов, то петли через объект и найти ключ.

function findKey(object, key) { 
    for(prop in object) { 
     if (prop == key) return object[prop]; 
    } 

    return null; 
} 

console.log(findKey({prop1: 'foo', prop2: 'bar'}, 'prop1')); 

// Output would be: foo 
Смежные вопросы