freeCodeCamp/curriculum/challenges/espanol/02-javascript-algorithms-an.../object-oriented-programming/understand-own-properties.md

2.1 KiB

id title challengeType forumTopicId dashedName
587d7dae367417b2b2512b7b Comprender las propiedades directas 1 301326 understand-own-properties

--description--

En el siguiente ejemplo, el constructor Bird define dos propiedades: name y numLegs:

function Bird(name) {
  this.name  = name;
  this.numLegs = 2;
}

let duck = new Bird("Donald");
let canary = new Bird("Tweety");

name y numLegs se llaman propiedades directas, porque están definidas directamente en la instancia del objeto. Eso significa que duck y canary tienen su propia copia separada de estas propiedades. De hecho, cada instancia de Bird tendrá su propia copia de estas propiedades. El siguiente código añade todas las propiedades directas de duck al arreglo ownProps:

let ownProps = [];

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

console.log(ownProps);

La consola mostrará el valor ["name", "numLegs"].

--instructions--

Agrega todas las propiedades directas de canary al arreglo ownProps.

--hints--

ownProps debe incluir los valores numLegs y name.

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

Debes resolver este desafío sin usar el método Object.keys().

assert(!/Object(\.keys|\[(['"`])keys\2\])/.test(code));

Debes resolver este desafío sin hacer una programación fija (hardcoding) del arreglo ownProps.

assert(
  !/\[\s*(?:'|")(?:name|numLegs)|(?:push|concat)\(\s*(?:'|")(?:name|numLegs)/.test(
    code
  )
);

--seed--

--seed-contents--

function Bird(name) {
  this.name = name;
  this.numLegs = 2;
}

let canary = new Bird("Tweety");
let ownProps = [];
// Only change code below this line

--solutions--

function Bird(name) {
  this.name = name;
  this.numLegs = 2;
}

let canary = new Bird("Tweety");
function getOwnProps (obj) {
  const props = [];

  for (let prop in obj) {
    if (obj.hasOwnProperty(prop)) {
      props.push(prop);
    }
  }

  return props;
}

const ownProps = getOwnProps(canary);