首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用对象组合保持自身属性的私密性

使用对象组合保持自身属性的私密性
EN

Stack Overflow用户
提问于 2019-04-01 07:43:22
回答 1查看 122关注 0票数 0

我是looking at a blog on object composition,它显示了下面的代码:

const canSayHi = self => ({
  sayHi: () => console.log(`Hi! I'm ${self.name}`)
});
const canEat = () => ({
  eat: food => console.log(`Eating ${food}...`)
});
const canPoop = () => ({
  poop: () => console.log('Going to ...')
});

// Combined previous behaviours
const socialBehaviors = self => Object.assign({}, canSayHi(self), canEat(), canPoop());

const alligator = name => {
  const self = {
    name
  };

  const alligatorBehaviors = self => ({
    bite: () => console.log("Yum yum!")
  });

  return Object.assign(self, socialBehaviors(self), alligatorBehaviors(self));
};


const jack = alligator("jack");

当您访问jack alligator时,当然可以访问jack上的name属性。如果我希望这个属性是私有的,这样jack.name就会返回undefined。我假设这将需要一个闭包,但我不确定最好/最干净的方法,或者仅仅是传统的方法。

我知道你不能把self传递给object.assign,但是如果你在self中有一个混合的变量,你希望一些变量是私有的,另一些变量是公共的,那该怎么办?我认为这里的解决方案应该是一个包含所有私有变量的“状态”文本和一个包含所有公共变量的“基本”文本,如果你想访问基本文本中的任何内容,那么就需要在objects.assign中的其他对象中使用它。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55446461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档