1.4 KiB

id, title, challengeType, forumTopicId
id title challengeType forumTopicId
587d7daf367417b2b2512b7d 迭代所有属性 1 301320

--description--

现在你已经了解了两种属性: 自身属性和原型属性。自身属性是直接在对象上定义的。而原型属性是定义在prototype上的:

function Bird(name) {
  this.name = name;  // 自身属性
}

Bird.prototype.numLegs = 2; // 原型属性

let duck = new Bird("Donald");

这个示例会告诉你如何将duck自身属性和原型属性分别添加到ownProps数组和prototypeProps数组里面:

let ownProps = [];
let prototypeProps = [];

for (let property in duck) {
  if(duck.hasOwnProperty(property)) {
    ownProps.push(property);
  } else {
    prototypeProps.push(property);
  }
}

console.log(ownProps); // prints ["name"]
console.log(prototypeProps); // prints ["numLegs"]

--instructions--

beagle的自身属性都添加到ownProps数组里面去。将Dog的所有原型属性添加到prototypeProps数组中。

--hints--

这个ownProps数组应该包含'name'这个值。

assert(ownProps.indexOf('name') !== -1);

这个prototypeProps数组应该包含'numLegs'这个值。

assert(prototypeProps.indexOf('numLegs') !== -1);

在不使用内置方法Object.keys()的情况下完成这个挑战。

assert(!/\Object.keys/.test(code));

--solutions--