Javascript Can';t在函数中使用传递对象的方法
我尝试过的 我有一个恒温器程序,它工作得非常好,因为它是用测试驱动开发的。然后,我在索引区域中编写了一些代码,将我的元素和按钮链接到恒温器程序,所有这些都起作用了 是什么造成了问题 当我现在想把它放在另一个js文件Linker.js中时,问题就出现了。如果从Linker.js中删除thermo.up(1),您看到的代码可以正常工作 Linker.jsJavascript Can';t在函数中使用传递对象的方法,javascript,function,class,parameters,external,Javascript,Function,Class,Parameters,External,我尝试过的 我有一个恒温器程序,它工作得非常好,因为它是用测试驱动开发的。然后,我在索引区域中编写了一些代码,将我的元素和按钮链接到恒温器程序,所有这些都起作用了 是什么造成了问题 当我现在想把它放在另一个js文件Linker.js中时,问题就出现了。如果从Linker.js中删除thermo.up(1),您看到的代码可以正常工作 Linker.js function returnTemp(thermo) { thermo.up(1) console.log(thermo.tem
function returnTemp(thermo) {
thermo.up(1)
console.log(thermo.temp)
}
恒温器.js
static up(num) {
this._tempChange(num);
console.log(this.temp);
};
Index.js
<!-- JS -->
<script src="src/Thermostat.js"></script>
<script src="src/Linker.js"></script>
<script>
var stat = new Thermostat
</script>
var stat=新恒温器
控制台
returnTemp(stat)
Uncaught TypeError: thermo.up is not a function
at returnTemp (Linker.js:59)
at <anonymous>:1:1
(edited)
returnTemp(stat)
未捕获类型错误:thermo.up不是函数
返回温度(Linker.js:59)
时间:1:1
(编辑)
我是如何修复它的,正如塔普拉所描述的那样
我的恒温器类有类方法,而不是实例方法。删除我的方法的static关键字修复了我的问题
Javascript作用域再次出现。
静态
方法没有引用类实例的this
。静态方法的调用类似于Thermostat.up()
,而不是instanceOfThermostat.up()
哦,我明白了,我想。我会将温度的实例变量改为类变量吗?这取决于变量应该具有的范围。如果您想让类的实例具有它们自己的值,您就不会使用静态方法或变量。我将尝试使这些方法现在不是静态的,如果它修复了它,我会报告回来。它成功了!我不熟悉javascript范围的东西。非常感谢。只是FWIW,类与原型方法(实例方法略有不同)与范围无关。作用域是关于独立标识符解析的。您的问题是查找对象上不存在的属性(因为该属性位于构造函数上,而不是实例继承的原型)。