Chrome未捕获的类型错误:无法读取属性未定义

时间:2020-02-19 10:57:35

标签: javascript google-chrome-extension

我是编程的新手,我正在研究史蒂芬·富特(Steven Foote)的《学习编程》一书。我试图找出为什么Chrome告诉我出现以下两个错误:

未捕获的TypeError:无法读取未定义的属性“ currentDate”
Uncaught TypeError:无法读取未定义的属性“ projectName”

这是我写的:

values.js

var kbValues = {
 projectName: 'kittenbook',
 versionNumber: '0.0.1',
 currentDate: new Date(), 
 currentTime: [kbValues.currentDate.getFullYear() + '-' + 
(kbValues.currentDate.getMonth() + 1)+ '-' +
kbValues.currentDate.getDate() + ' at ' + 
kbValues.currentDate.getHours() + ':' + 
kbValues.currentDate.getMinutes() + ':' + 
kbValues.currentDate.getSeconds()]
};

kittenbook.js

document.body.innerHTML = '<h1>Hello, ' + userName + '!</h1>' + 
'<p>' + kbValues.projectName + '' + kbValues.versionNumber +
' accessed on: ' + kbValues.currentTime + '</p>';

manifest.json

{
    "manifest_version": 2,
    "name": "kittenbook",
    "description": "Replace photos on Facebook with kittens",
    "version": "0.0.1",
    "content_scripts": [
        {
            "matches": ["*://www.facebook.com/*"],
            "js": ["js/values.js","js/kittenbook.js"]
        }
    ]
}

我真的很新。

1 个答案:

答案 0 :(得分:0)

您不能在变量定义期间使用属性,而是在分配变量之前尝试访问kbValues的currentDate

如您所见,此代码段将返回错误:

var kbValues = {
 projectName: 'kittenbook',
 versionNumber: '0.0.1',
 currentDate: new Date(), 
 currentTime: [kbValues.currentDate.getFullYear() + '-' + 
  (kbValues.currentDate.getMonth() + 1)+ '-' +
   kbValues.currentDate.getDate() + ' at ' + 
   kbValues.currentDate.getHours() + ':' + 
   kbValues.currentDate.getMinutes() + ':' + 
   kbValues.currentDate.getSeconds()]
};

相反,您应该尝试在变量定义之前分配日期,这样您便可以访问日期

var currentDate = new Date();

var kbValues = {
 projectName: 'kittenbook',
 versionNumber: '0.0.1',
 currentDate, 
 currentTime: [currentDate.getFullYear() + '-' + 
  (currentDate.getMonth() + 1)+ '-' +
   currentDate.getDate() + ' at ' + 
   currentDate.getHours() + ':' + 
   currentDate.getMinutes() + ':' + 
   currentDate.getSeconds()]
};

console.log(kbValues)