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

来源:互联网 发布:视频格式转换器 mac 编辑:程序博客网 时间:2024/06/02 03:04

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

这个验证码倒计时提示是需要传递倒计时时间参数的,因此就不能像简单的文本替换写个映射就简单解决,当然也是基于映射关系的,但是要麻烦一些。由于是自己测试出来的,成功之后就感觉像是发现了新大陆!!!(妈的,原来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
原创粉丝点击