如何给你的json对象的某个方法,然后用这个对象的属性输出结果?

最近做多语言切换功能时遇到一个问题,发送验证码后倒计时文本的问题。

这个验证码倒计时提示是需要传递倒计时时间参数的,因此就不能像简单的文本替换写个映射就简单解决,当然也是基于映射关系的,但是要麻烦一些。由于是自己测试出来的,成功之后就感觉像是发现了新大陆!!!(妈的,原来json对象还能这么玩儿)

不废话了,上代码、效果图!

代码:下面这段代码是处理多语言映射关系的一个js,写在一个粗糙的对象中,页面只需要调用TRANS方法并传递必要参数即可返回对应的语言。主要的操作就在langFormMap.TRANS这个方法属性中了。在最后一个else分支里,出现了两次变量赋值,为啥是两次?因为我试过一次失败了,形如:var val = this[type][word(param)],这么操作我觉得理所当然啊!然而并不行。

因此,先将word映射到的那个带参函数赋值给一个变量,然后再通过操作这个变量间接为原函数传值,通过这样两步骤终于是拿到想要的东西了

let langFormMap = {
    params:"",
    TRANS:function (type,word,param) {
        console.log(type,word,param)
        if (!this[type]){
            console.log('no lang type')
            return word;
        }else{
            if(typeof(param) == "undefined"){
                return this[type][word]||word;
            }else{
                // this.params = param;
                var fun = this[type][word]
                var val = fun(param)
                return val;
            }
        }
    },
    "en": {
        "登录": "Login",
        "密码": "password",
        "确认密码": "repassword",
        "账号登录": "User Login",
        "注册新账号": "New Account",
        "手机号": "cellphone",
        "验证码": "verification code",
        "获取验证码": "get verification code",
        "countdown"(param){
            return "after ("+param+")s latter"
        }
    },
    "jp": {
        "登录": "登録",
    },
    "fr": {
        "你好": "Bonjour",
        "热爱": "Aimer",
    },
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值