【问题标题】:Adding a method to an object that is inside of a function in js向js中函数内部的对象添加方法
【发布时间】:2018-03-17 23:35:42
【问题描述】:

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

使用 Object.create

挑战 1/3

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

挑战 2/3

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

挑战 3/3

在不编辑您已经编写的代码的情况下,将 introduce 方法添加到记录“嗨,我的名字是 [name]”的 personStore 对象。

侧面好奇

顺便说一句,我很好奇是否有办法将引入方法添加到位于 personFromPersonStore 函数内部的 person 对象中。

我的解决方案:

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

【问题讨论】:

    标签: javascript function object constructor


    【解决方案1】:

    可以,但使用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);

    【讨论】:

      【解决方案2】:

      你可以这样写:

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

      而不是这个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-23
        • 1970-01-01
        • 2013-09-04
        • 1970-01-01
        • 2023-03-10
        • 1970-01-01
        相关资源
        最近更新 更多