摘要:现在有一个需求,将没有而有的属性混入到中。有而且也有的属性不混入以为准。通过这种混入机制滚雪球的方式可以不断地扩充一个对象地的功能。暂且将它定义为混入模式。混入模式是构建复杂对象的一种常用的模式。
有A对象和B对象,A, B对象有有方法属性和数据属性。现在有一个需求,将A没有而B有的属性混入到A中。A有而且B也有的属性不混入以A为准。通过这种混入机制(滚雪球的方式)可以不断地扩充一个对象地的功能。暂且将它定义为混入模式。这种模式在Vue构建的过程中使用到,在Express构建的过程中也使用到。混入模式是JS构建复杂对象的一种常用的模式。
function mixin(dest, src, cover) { if (dest === undefined) { throw Error("dest can not null"); } if (src === undefined) { throw Error("src can not null"); } if (cover === undefined) { cover = false; } Object.getOwnPropertyNames(src).forEach(function(prop) { if (Object.prototype.hasOwnProperty.call(dest, prop)) { return; } let value = Object.getOwnPropertyDescriptor(src, prop); Object.defineProperty(dest, prop, value); }); } const a = { x: 1, y: 2, z: 3, say: function() { console.log("local state (x, y, z)"); } } const b = { r: 4, s: 5, z: 6, run: function() { console.log("local state (r, s, z)"); } } const c = { m: 4, n: 5, y: 6, bit: function() { console.log("local state (m, n, y)"); } } mixin(a, b); mixin(a, c); console.log("mixin a ", a);
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/106555.html
摘要:明白了什么是以后,便可开始着手在小程序里面实现了。但是在小程序中,这套机制会和的有一点区别。代码实现在小程序中,每个页面都由函数定义,而则作用于这个函数当中的对象。函数即为小程序运行机制的具体实现,完全按照上一节总结的三条结论来进行。 原文来自我的博客:https://jrainlau.github.io/#/... showImg(https://segmentfault.com/...
摘要:在中,我们是否也有一些手段或特性来提高组件的复用程度和灵活性呢答案当然是有的,那就是。成果通过实现,我们成功将注入的逻辑抽离了出来,这样每次需要共享组件的状态和方法时,混入该即可。 03 使用 mixin 来增强 Vue 组件 目标 之前一篇文章中,我们虽然将 toggle 组件划分为了 toggle-button、toggle-on 和 toggle-off 三个子组件,且一切运行良...
摘要:使用替换目标在第三篇文章中,我们使用来抽离了注入依赖项的公共逻辑。成果通过作用域插槽,我们有效地避免了第三方组件由于混入而可能造成的命名冲突以及隐式依赖等问题。 04 使用 slot 替换 mixin 目标 在第三篇文章中,我们使用 mixin 来抽离了注入 toggle 依赖项的公共逻辑。在 react 中,类似的需求是通过 HOC 的方式来解决的,但是仔细想想的话,react 在早...
阅读 2077·2021-10-08 10:21
阅读 2471·2021-09-29 09:34
阅读 3493·2021-09-22 15:51
阅读 4926·2021-09-22 15:46
阅读 2313·2021-08-09 13:42
阅读 3433·2019-08-30 15:52
阅读 2722·2019-08-29 17:13
阅读 1554·2019-08-29 11:30