Ger*_*ica 4 javascript casting
我知道如何控制任何对象String在 JavaScript 中的转换方式:
var Person = function(firstName, lastName, age, heightInCm) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.heightInCm.heightInCm;
};
Person.prototype.toString = function() {
return this.firstName + ' ' + this.lastName;
};
var friend = new Person('Bob', 'Johnson', 41, 183);
// Will automatically treat `friend` as a string using `Person.prototype.toString`
console.log(`Meet my friend ${friend}. He's SUPER AWESOME!!`);
Run Code Online (Sandbox Code Playgroud)
如您所见,friend自动转换为String. 我的问题是:数字是否存在相同的功能?
我可以看到String实例能够自动转换为Number:
>>> 5 * '5'
25
Run Code Online (Sandbox Code Playgroud)
但我不确定如何在自定义对象上实现这种自动转换。以下不起作用:
Person.prototype.toNumber = function() {
return this.age;
};
console.log(friend * 2); // Intended to be 82, but the result is NaN
Run Code Online (Sandbox Code Playgroud)
如何允许自定义对象自动转换为数字?
您需要覆盖valueOf:
Person.prototype.valueOf = function() {
return this.age;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1289 次 |
| 最近记录: |