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

JavaScript struct类型与valueOf

2016-07-23 16:55 525 查看
在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获取当前值然后再进行对比。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息