有没有办法覆盖JavaScript对象的通话方式?

时间:2016-11-03 02:05:17

标签: javascript javascript-objects

例如,

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

并且预期的回报只是属性中的一个而不是全部显示,如

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

仅显示选择性属性,不经过

a.prop1

但只是

a

2 个答案:

答案 0 :(得分: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');

答案 1 :(得分: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