[英]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.