您的位置:首页 > Web前端 > JavaScript

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

2017-09-19 14:34 477 查看
最近做多语言切换功能时遇到一个问题,发送验证码后倒计时文本的问题。

这个验证码倒计时提示是需要传递倒计时时间参数的,因此就不能像简单的文本替换写个映射就简单解决,当然也是基于映射关系的,但是要麻烦一些。由于是自己测试出来的,成功之后就感觉像是发现了新大陆!!!(妈的,原来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",
},
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript js web 对象 函数
相关文章推荐