摘要:現在有一個需求,將沒有而有的屬性混入到中。有而且也有的屬性不混入以為準。通過這種混入機制滾雪球的方式可以不斷地擴充一個對象地的功能。暫且將它定義為混入模式。混入模式是構建復雜對象的一種常用的模式。
有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);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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 在早...
閱讀 2078·2021-10-08 10:21
閱讀 2471·2021-09-29 09:34
閱讀 3494·2021-09-22 15:51
閱讀 4926·2021-09-22 15:46
閱讀 2314·2021-08-09 13:42
閱讀 3434·2019-08-30 15:52
閱讀 2723·2019-08-29 17:13
閱讀 1555·2019-08-29 11:30