JavaScript struct类型与valueOf
2016-07-23 16:55
525 查看
在JS的值的对比中,我们经常会用到valueOf,然于这个方法到底有什么奇特之处呢。下面就来一段valueOf用处示例:
再普通不过的一段代码,用来表示一个值是否在0~54之间(不包含54)。但是如果用来跟其它比较大小的话,问题来了,如:
查看上面的代码,你会发现这值没法比,只能使用:
来进行判断了,如果换作其它语言,你肯定会想到使用 struct 或者 operator,可是在JS中该怎么使用它呢?
其实相比其它语言JS更简单,你只需要使用valueOf就可以实现了。
于是我们加上代码:
再继续执行上面的示例:
有没有发现,两个都正常输出了啊。哈哈,是不是跟 struct 一样呢?
其实,在JS中valueOf只得到值的类型,当两个值进行比较时,会先通过valueOf获取当前值然后再进行对比。
function Card(value) { this.value = value; this.isValid = value>=0 && value < 54; }
再普通不过的一段代码,用来表示一个值是否在0~54之间(不包含54)。但是如果用来跟其它比较大小的话,问题来了,如:
var a = new Card(11); if(a == 11) { console.log("猜对了"); }
查看上面的代码,你会发现这值没法比,只能使用:
var a = new Card(11); if(a.value == 11) { console.log("猜对了"); }
来进行判断了,如果换作其它语言,你肯定会想到使用 struct 或者 operator,可是在JS中该怎么使用它呢?
其实相比其它语言JS更简单,你只需要使用valueOf就可以实现了。
于是我们加上代码:
Card.prototype = { valueOf:function () { return this.value; } }
再继续执行上面的示例:
var a = new Card(11); if(a == 11) { console.log("猜对了"); }
var a = new Card(11); if(a.value == 11) { console.log("猜对了"); }
有没有发现,两个都正常输出了啊。哈哈,是不是跟 struct 一样呢?
其实,在JS中valueOf只得到值的类型,当两个值进行比较时,会先通过valueOf获取当前值然后再进行对比。
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解