繁体   English   中英

JavaScript对象属性返回未定义

[英]JavaScript object property returns undefined

我已经浏览了许多线程,在Google上搜索了很多,并尝试自行解决此问题,但我做不到。 我正试图解决我的问题。

我收到存储在本地存储中的字符串。

var c = localStorage.getItem('item');

然后,我将此值传递给构造函数,以将该值分配给对象的属性。 这是类和构造函数。

class dataSet {
    constructor ( item ) {
      this.item = item;
    }

    get item() {
      return this._item;
    }

借助按钮,单击时调用以下函数:

function buildSet() {
    var currentSet = new dataSet( c );
    document.write(currentSet.item);
    document.write(c);
}

document.write(c)只是一个测试,以查看是否存储了任何值,是的,存储了我的“ test”字符串。 结果,我得到:

undefinedTest

我对JavaScript还是很陌生,我知道以某种方式dataset对象没有获得该值并且没有分配它,但是我不知道如何解决它。 我确实阅读了关于stackoverflow的该主题的每个现有线程,但无法提出解决方案。 谢谢您的时间。

您的错误在构造函数中!

您缺少_

应该是this._item = item; 代替this.item = item;

因此,您的getter,即:

get item() {
  return this._item;
}

由于没有_item属性,因此返回undefined。

正如之前有人对您发表评论一样,这里的问题是因为您在构造函数中缺少_。 但是,如果这不能解决您的问题,则可能是问题与localStorage中项目的值有关。 这里有一个使用简单String的代码示例:

 var c = 'hello world'; class dataSet { constructor (item) { this._item = item; } get item () { return this._item; } } function buildSet() { var currentSet = new dataSet(c); alert(currentSet.item); alert(c); } 
 <!DOCTYPE html> <html> <body> <button onclick="buildSet()">click me</button> </body> </html> 

让我们做一些检查,看看代码的行为,因为它按预期工作,唯一的是您缺少一些检查和一些字符。

 //make sure that C has a value, maybe it is undefined from here. var c = "fakeItem"; // also lets do a test with an undefined value. var d; class dataSet { constructor(item) { this._item = item; } get item() { //you were missing a _ here. return this._item; } } function buildSet() { var currentSet = new dataSet(c); //this works because C is defined var dSet = new dataSet(d); //this does not work because D is not defined // it works as expected! console.log(currentSet.item); document.write("currentSet.item: " + currentSet.item); document.write("\\n<br>"); document.write("c: " + c); document.write("\\n<br>"); // also works as expected, it will show undefined console.log(dSet.item); document.write("dSet.item: " + dSet.item); document.write("\\n<br>"); document.write("d: " + d); } 
 <button onclick="buildSet()">SET TEST</button> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM