调用JS对象updateValue方法回显正常,但land.Type未更新且参数未读
问题排查与修复方案
1. 编辑器警告触发原因
你看到的JS function parameters are declared but never read警告,根源是updateValue方法的第一个参数x没有被实际读取使用:你在方法内写的this.x是固定给对象新增名为x的属性,不会解析参数x的实际传值,等于参数x定义后完全没用,因此触发编辑器警告。
2. land.Type为空的根因
JS中对象属性访问存在两种语法规则:
- 点语法:
this.x是固定访问对象的x属性,不会把x作为变量解析取值 - 方括号语法:
this[x]会先解析x变量的实际值,再访问对象中对应名称的属性
你当前的写法等于把输入值存在了land.x这个新增属性里,完全没有修改原本定义的Type属性,所以land.Type一直是空字符串。另外你代码里的console.log(this[0])也没有实际作用,this指向的是land对象不是数组,不存在下标为0的属性,只会输出undefined。
3. 修复方案
只需要修改updateValue方法的属性访问语法即可,调用逻辑不需要改动:
const land = { Type: "", Adress: "", Value: "", updateValue: function (x, y, z) { // 改用方括号访问动态属性 this[x] = document.getElementById(y).value; document.getElementById(z).textContent = this[x]; // 测试验证用,不需要可以删除 console.log(this[x]); }, };
修改后输入内容提交,land.Type就能正常存入输入值,编辑器的警告也会同步消失。
内容的提问来源于stack exchange,提问作者youngmago
相关产品推荐
相关产品推荐

