繁体   English   中英

向js中函数内部的对象添加方法

[英]Adding a method to an object that is inside of a function in js

嗨,这是我正在处理的一个挑战。 有什么方法可以在不使用关键字 this 的情况下将介绍方法添加到personStore对象。 任何见解都非常感谢。

使用 Object.create

挑战 1/3

personStore对象中,创建一个属性greet,其中的值是一个记录“hello”的函数。

挑战 2/3

创建一个将姓名和年龄作为输入的函数personFromPersonStore > 调用时,该函数将使用personStore对象上的 Object.create 方法创建 person 对象。

挑战 3/3

无需编辑您已经编写的代码,向记录“嗨,我的名字是 [name]”的personStore对象添加一个introduce方法。

好奇心

作为旁注,很好奇是否有办法将引入方法添加到位于 personFromPersonStore 函数内部的人对象。

我的解决方案:

var personStore = {
    // add code here
  greet: function (){
    console.log('Hello');
  }
};

function personFromPersonStore(name, age) {
  var person = Object.create(personStore);
  person.name = name;
  person.age = age;
  person.greet = personStore.greet;
  return person;    
};

personStore.introduce = function () {
  console.log('Hi, my name is ' + this.name)
}

//Challenge 3 Tester
sandra.introduce(); // -> Logs 'Hi, my name is Sandra

你可以,但使用this要简单得多。

这段代码将name属性作为参数传递,但由于introduce函数已经可以通过this作为内部属性访问该属性,因此有点浪费。

 var personStore = { // add code here greet: function (){ console.log('Hello'); } }; function personFromPersonStore(name, age) { var person = Object.create(personStore); person.name = name; person.age = age; person.greet = personStore.greet; return person; }; personStore.introduce = function (nm) { console.log('Hi, my name is ' + nm) } person1=personFromPersonStore('Fred',21); person1.introduce(person1.name);

你可以这样写:

personFromPersonStore("whatevername","whateverage").name 

而不是这个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM