javascript - 是否可以创建一个可以在特定函数内操作对象的函数?

标签 javascript object

假设我们有一个函数,里面有一个对象等等:

 function myFunc() {
   var obj = {
     "one" : "1",
     "two" : "2"
   };
   // And more code is down here but our main focus is in the obj object.
 };

现在考虑另一个专门为 myFunc() 设计的函数,它可以在 myFunc() 中添加或删除对象 obj 的属性。例如,考虑函数 manip() 是可以在函数 myFunc() 中最小化 obj 对象的特殊函数:

 manip("add", {
  "three" : "3"
}; 
/* Now the obj object inside myFunc() becomes :
  var obj = {
    "one" : "1",
    "two" : "2",
    "three" : "3"
  } 

再次:

 manip("remove", "one three");
 /* Now the obj object inside myFunc() becomes :
   var obj = {
    "two" : "2"
   }

那么,这可能吗?可以制作 manip() 函数吗?

最佳答案

这里的关键是

1) 将您的obj 作为函数的公共(public)属性公开

2) 实例化一个myFunc对象

3) 将该对象传递给您的 manip 函数,以便对其进行修改

function myFunc() {
  this.obj = {
    one: '1',
    two: '2'
  };
};

function manip(item, action, parameters) {
  if (action === 'add') {
    return item.obj = { ...item.obj, ...parameters };
  } else if (action === 'remove') {
    delete item.obj[parameters];
  }
}

// Instantiate a new myFunc Object
const myFuncInstance = new myFunc();

console.log(myFuncInstance.obj);

manip(
  myFuncInstance,
  'add',
  { three: '3' }
); 

console.log(myFuncInstance.obj);


manip(
  myFuncInstance,
  'remove',
  'two'
);

console.log(myFuncInstance.obj);

关于javascript - 是否可以创建一个可以在特定函数内操作对象的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58469743/

相关文章:

java - 如何在 Java 中将 json 转换为 ArrayList 对象?

javascript - 条件 if else 在哈巴狗中

javascript - 无法在 GULP 中按特定顺序执行任务

javascript - 使用另一个对象的属性值作为属性名称将属性分配给 JS 对象

Android - Gridview 图像在滚动时混合

javascript - 在 JavaScript 中,如果我分配给一个有 getter 但没有 setter 的对象属性会发生什么?

javascript - ChartJS - 一个元素的工具提示覆盖了用户应该能够选择的点

javascript - 参数 Controller 不是一个函数,未定义 - 一个页面中有两个 Angular 应用程序

javascript - 通过子值操纵父div

c++ - 在 C++ 中传递对象会出现 'invalid use of non-static member' 错误