javascript - 有没有办法给变量(数字)添加原型,并且原型可以改变变量本身?
问题描述
我知道将原型添加到本机 javascript 对象是一个坏主意,但我想将原型添加到变量中,例如原型Number.limit(min, max);
可以更改变量的位置。
Number.prototype.limit = function(min, max) {
if (this < min) {
this = min;
} else if (this > max) {
this = max;
}
};
似乎 usingthis
在分配错误中给出了无效的左侧
我搜索了谷歌和堆栈溢出,但没有人回答我的问题
那有可能吗?我该怎么做?
解决方案
不,这是不可能的(在大多数情况下)——你能做的最好的就是返回调用者重新分配的新值:
Number.prototype.limit = function(min, max) {
if (this < min) {
return min;
} else if (this > max) {
return max;
}
return this;
};
let num = 5;
let newNum = num.limit(10, 15);
console.log(newNum);
如果您熟悉 Javascript,要了解为什么它不可能,那么在没有实现的情况下查看方法的调用可能会有所帮助:
let someVar = <something>;
someMethod(someVar);
无论如何someMethod
,someVar
变量名在上述范围内绑定的对象或原语是不可更改的someMethod
(除非someMethod
也在该范围内定义,这有点奇怪,通常情况并非如此)。除非也有and someMethod
dos 的词法范围,否则将保持引用。虽然可能会改变,但如果它是一个对象,它不能在另一个范围内重新分配变量名。someVar
someVar = <somethingElse>
someVar
<something>
someMethod
<something>
someVar
推荐阅读
- python-3.x - 为什么 Python 不为顶级脚本文件保存字节码文件?
- c++ - How does everything work (including operator '->'), when sizeof's size and the actual object size don't match?
- authentication - 如何在flutter中从streambuilder导航到其他页面?
- python - Discord.py - 如何检测用户是否提到/ping 机器人
- c++ - 自定义lua字节码/操作码(编译器/阅读器/解析器/反编译器)
- azure - Azure AD B2C - 自定义 Azure AD 自定义身份提供程序的 UI
- python-3.x - Trim text from scraped element - Python / bs4
- python - 我正在尝试下载 pygame,但它一直出现相同的错误(错误:命令 'gcc' 失败,退出状态为 1)?
- windows - 在 windows 中替换 create_symlink
- javascript - bcryptjs 或 bcrypt 如何验证使用随机盐生成的密码哈希?