js 设计模式3 (共享,模板,继承)

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <title></title>

</head>

<body>
    <div id="my"></div>
    <script>
        // 表  属性名  属性值
        var wyLook = function(i, ii, iii) {
            if (shu_jv_ku[i] == undefined) {
                shu_jv_ku[i] = {
                    id: 0
                }
            } else if (shu_jv_ku[i][ii] == undefined) {
                shu_jv_ku[i][ii] == {}
            }
            shu_jv_ku[i][ii] = iii
            shu_jv_ku[i].id++
        }

        var getwyLook = function(i, ii) {
            if (ii == undefined) {
                return shu_jv_ku[i]
            } else {
                return shu_jv_ku[i][ii]
            }

        }

        // 数据库
        var shu_jv_ku = {};
        // 类
        var cal = (function() {

            var cal = function(cal1) {
                // 继承防止出
                var ee = ''
                    // 检测是否开启了继承模式
                if (cal1.e != undefined) {
                    ee = cal.prototype.e(cal1.e)
                }

                // 检测是否开启了 共享模式
                if (cal1.public != undefined) {
                    cal.prototype.public(cal1.public)
                }



                //检测 是否开启了模板模式
                if (cal1.form != undefined) {
                    cal.prototype.form(cal1.form)
                }

                wyLook(cal1.shu.biao, cal1.shu.name, cal1.wy(ee, getwyLook('public'), cal.prototype.formzhi_xing))
            }
            cal.prototype.e = function(e = [], ee = {}) {
                var er = e.shift()
                if (er) {
                    ee[er[1]] = getwyLook(er[0], er[1])

                    return cal.prototype.e(e, ee)
                } else {
                    return ee
                }
            }

            cal.prototype.public = function(e = {}) {
                for (ww in e) {
                    wyLook('public', ww, e[ww])
                }
            }
            cal.prototype.form = function(e = {}) {
                    for (ww in e) {
                        wyLook('form', ww, e[ww])
                    }
                }
                // 参数1 原有的模板的名字  参数2 被重写的模板
            cal.prototype.formzhi_xing = function(eename, e = {}) {
                var ee = getwyLook('form', eename)
                for (ww in ee) {

                    if (e[ww] != undefined) {
                        e[ww]()
                    } else {
                        ee[ww]()
                    }
                }
            }
            return cal
        })()



        // 包容盒
        cal({
            //写入数据库
            shu: {
                biao: 'gong_jv',
                name: 'node'
            },
            // 数据库值  i  继承的参数  ii 共享模式  iii 模板方法
            wy: function(i, ii, iii) {
                iii('cc', {
                    1: function() {
                        console.log('重写了模板的这条语句')
                    }
                })
                return {

                }
            },

            // 共享模式
            public: {
                cc: {
                    name: '121'
                }
            },
            //模板方法
            form: {
                cc: {
                    0: function() {
                        console.log('原来')
                    },
                    1: function() {
                        console.log('原来')
                    },
                    2: function() {
                        console.log('原来')
                    },
                }
            }
        })
        cal({

            shu: {
                biao: 'gong_jv',
                name: 'ww'
            },
            wy: function(i) {

                return {

                }
            }


        })
        cal({
                // 继承数据库的值  表  属性名

                shu: {
                    biao: 'gong_jv',
                    name: 'w'
                },
                wy: function(i) {

                    return {

                    }
                }


            }),



            console.log(shu_jv_ku)
    </script>
    <script>
    </script>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值