(广告,请不要屏蔽。)

测验 » 对象

1. 对象字面量

const obj = {
  true: 'a',
  ['true']: 'b',
  [true]: 'c',
};
const result = Object.keys(obj).length;

会发生什么?

2. 计算属性键 (1/6)

const foo = 'bar';
const obj = {
  foo: 'a',
  [foo]: 'b',
};
const result = obj.foo;

会发生什么?

3. 计算属性键 (2/6)

const foo = 'bar';
const obj = {
  foo: 'a',
  [foo]: 'b',
};
const result = obj.bar;

会发生什么?

4. 计算属性键 (3/6)

const foo = 'bar';
const obj = {
  foo: 'a',
  [foo]: 'b',
};
const result = obj[foo];

会发生什么?

5. 计算属性键 (4/6)

const foo = 'bar';
const obj = {
  foo: 'a',
  [foo]: 'b',
};
const result = obj[bar];

会发生什么?

6. 计算属性键 (5/6)

const foo = 'bar';
const obj = {
  foo: 'a',
  [foo]: 'b',
};
const result = obj['foo'];

会发生什么?

7. 计算属性键 (6/6)

const foo = 'bar';
const obj = {
  foo: 'a',
  [foo]: 'b',
};
const result = obj['bar'];

会发生什么?

8. 迭代对象 (1/4)

const symbol1 = Symbol('symbol1');
const symbol2 = Symbol('symbol2');

const obj = {
  name1: 0,
  [symbol1]: 0,
};
Object.defineProperties(obj, {
  name2: { enumerable: false, value: 0 },
  [symbol2]: { enumerable: false, value: 0 },
});

const result = Object.keys(obj);

结果是什么?

9. 迭代对象 (2/4)

const symbol1 = Symbol('symbol1');
const symbol2 = Symbol('symbol2');

const obj = {
  name1: 0,
  [symbol1]: 0,
};
Object.defineProperties(obj, {
  name2: { enumerable: false, value: 0 },
  [symbol2]: { enumerable: false, value: 0 },
});

const result = Reflect.ownKeys(obj);

结果是什么?

10. 迭代对象 (3/4)

const symbol1 = Symbol('symbol1');
const symbol2 = Symbol('symbol2');

const obj = {
  name1: 0,
  [symbol1]: 0,
};
Object.defineProperties(obj, {
  name2: { enumerable: false, value: 0 },
  [symbol2]: { enumerable: false, value: 0 },
});

const result = Object.getOwnPropertyNames(obj);

结果是什么?

11. 迭代对象 (4/4)

const symbol1 = Symbol('symbol1');
const symbol2 = Symbol('symbol2');

const obj = {
  name1: 0,
  [symbol1]: 0,
};
Object.defineProperties(obj, {
  name2: { enumerable: false, value: 0 },
  [symbol2]: { enumerable: false, value: 0 },
});

const result = Object.getOwnPropertySymbols(obj);

结果是什么?

12. 调用方法

const jane = {
  name: 'Jane',
  hello() {
    return `Hello ${this.name}!`;
  },
};
const func = jane.hello;

以下哪种调用 obj.hello 的方式有效?

13. 原型链

const proto = { prop: 'a' };
const obj = Object.create(proto);

obj.prop = 'b';

proto.prop 是什么?

14. 原型链

const proto = {
  foo: 'p',
  logFoo() {
    console.log(this.foo);
  }
};
const obj = {
  foo: 'o',
  __proto__: proto,  
};

proto.logFoo.call(obj);
proto.logFoo.call(proto);

会发生什么?


正确答案00