【发布时间】:2021-02-28 23:43:19
【问题描述】:
我的尝试
我有一个恒温器程序,由于它是通过测试驱动开发制作的,所以它工作得非常好。然后我在我的索引区域编写了一些代码,将我的元素和按钮链接到恒温器程序,这一切都奏效了。
造成问题的原因
当我现在想把它放在另一个 js 文件 Linker.js 中时,问题就出现了。如果您从 Linker.js 中删除 thermo.up(1),您看到的代码可以正常工作
Linker.js
function returnTemp(thermo) {
thermo.up(1)
console.log(thermo.temp)
}
Thermostat.js
static up(num) {
this._tempChange(num);
console.log(this.temp);
};
索引.js
<!-- JS -->
<script src="src/Thermostat.js"></script>
<script src="src/Linker.js"></script>
<script>
var stat = new Thermostat
</script>
控制台
returnTemp(stat)
Uncaught TypeError: thermo.up is not a function
at returnTemp (Linker.js:59)
at <anonymous>:1:1
(edited)
【问题讨论】:
-
static方法没有this引用类的实例。静态方法将被称为Thermostat.up(),而不是instanceOfThermostat.up() -
哦,我明白了,我想。我可以将温度的实例变量改为类变量吗?
-
这取决于变量应该具有的范围。如果您希望类的实例具有自己的值,则不会使用静态方法或变量。
-
我明白了。我现在将尝试使这些方法不是静态的,如果解决了问题,我会回来报告。
-
成功了!我是这个 javascript 范围的新手。谢谢!
标签: javascript function class parameters external