繁体   English   中英

如何修复无法读取未定义的属性 hasOwnProperty

[英]How to fix Cannot read property hasOwnProperty of undefined

如何修复无法读取未定义的属性“hasOwnProperty”?

使用 Angular.JS 1.3

parentConroller中的$rootScope.settings中分配响应数据。

所以rootScope将是这样的

    $rootScope.settings = api.data;

//sample
    $rootScope.settings:{
        "lastLogin":"2005-01-01",
        "isStudent": true,
        "assignedCourse": "['JAVA + DS']"
    }

并访问 anotherController.JS 中的$rootScope数据。 但在这里我不希望我的数组在字符串中,所以要删除双引号,我尝试了以下方法

尝试 1:

 if($rootScope.settings.hasOwnProperty('assignedCourse')) {
        $rootScope.settings.assignedCourse = ['JAVA + DS']
    }

尝试 2:

$rootScope.settings.assignedCourse = JSON.parse(rootScope.settings.assignedCourse.replace(/'/g, '"'));

// giving me Error: Unexpected token ' in JSON at position 1

尝试 1 在应用程序中工作,但是当我运行 karma 调试器时它失败了,它显示了TypeError: 无法读取未定义的属性“hasOwnProperty”

从字面上不知道如何解决这个问题。 努力修复超过一天

我已经经历了一些与我的问题相关的 SO。 但没有得到更好的解决方案

旁注:目前仅使用普通的旧 JavaScript,而不是 es6 或更新版本。

对于初学者,您可能希望使用angular.isDefined($rootScope.settings.assignedCourse)而不是 hasOwnProperty 因为它在语法上可能更接近您正在测试的内容(定义值而不是财产所有权)

关于在测试中失败的尝试 1,设置未定义。 您可能需要重新检查您的测试台,并确保您的示波器按预期进行初始化。

我成功地重新创建了您的尝试 2,我怀疑这里发生了其他事情并且可能是由另一条线路引起的。

示例代码

暂无
暂无

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

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