如何给你的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",
},
}
这个验证码倒计时提示是需要传递倒计时时间参数的,因此就不能像简单的文本替换写个映射就简单解决,当然也是基于映射关系的,但是要麻烦一些。由于是自己测试出来的,成功之后就感觉像是发现了新大陆!!!(妈的,原来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",
},
}
相关文章推荐
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- Java - 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- java面试题解惑:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 当一个对象被当做参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- EF 实体+ Newtonsoft.Json 输出JSON 时动态忽略属性的解决方法
- JS 输出对象的属性以及方法
- Ajax核心XMLHttpRequest对象、(发送请求、接收)方法和属性介绍、AJAX开发框架、数据格式提要(XML、JSON、HTML)
- 在Struts2中如何将父类属性序列化为JSON格式的解决方法
- math 是实例化过后的对象 然后调用属性 和函数 这个类存在去浏览器中,javascript解析器 去解释
- ASP输出结果不支持html语法这个是如何实现的
- 如何理解对象、属性、方法?
- QBC如何通过某个对象中集合的属性来查询结果集
- 写一个方法进行各种属性的更新,而不要每个界面设置改变都改变一个属性。就是点击应用或确定按钮时调用这个更新属性的方法,遍历所有(控制对象属性的)界面控件的状态(值),进行属性修改和刷新。
- 利用反射遍历对象属性输出json字符串
- Java 把对象作为参数传到一个方法里,这个是值传递还是引用传递, 为什么结果这么怪?