问题
这可能很简单,我不太确定这(只是因为它处理对象)是否是一个“面向对象”的问题。我构建了一个 JavaScript 对象作为学习练习。我可以访问各种方法和属性,但是,依赖计算属性的 *** 方法返回未定义并给出错误。我不是 JavaScript 专家,大约 6 年前我开始学习 jQuery。现在,我正在尝试自学 vanilla JavaScript 基础知识。由于 ES6/2015 似乎是我正在尝试学习的最新方法。
我在 PHP 方面确实有一些 OOP 经验,所以我认识一些 OOP 概念,但只能说我有点生疏。
当我尝试查看 objActorInfo.birth.birthdateusa
的内容时出现问题:
Uncaught ReferenceError: birthdatenumsusa is not defined at Object.get birthdateusa [as birthdateusa] (:23:27) at :1:20
当我 console.log 整个 objActorInfo 对象并检查 birthdateusa 属性时,我得到以下附加信息:
[Exception: ReferenceError: birthdatenumsusa is not defined at Object.get birthdateusa [as birthdateusa] (:23:27) at Object.remoteFunction (:2:14)]
我不确定我做错了什么。
我的代码
console.clear();
var objActorInfo = {};
// function birthStrings(date) {
objActorInfo.birth = {
/* DATES */
birthYear4: 1960,
birthMonthNum: 10,
birthDayOfMO: 18,
get birthDateUSA() {
/* This method sets the values of multiple properties
and therefore, according to my understanding, doesn't need
to return anything.
*/
var birthdate4USA = [this.birthMonthNum,this.birthDayOfMO,this.birthYear4].join('/');
this.birthMonthStr = birthdate4USA.toLocaleString("en", { month: "long" });
},
};
console.log(objActorInfo);
console.log("objActorInfo.birth.birthdateusa: " + objActorInfo.birth.birthdateusa);
我试过但没有用的东西
我在网上查看了很多链接,但其中大部分指向有关 JavaScript 库的错误报告,而不是 vanilla JS。我对原型(prototype)制作知之甚少,到目前为止,还不需要。但是,我注意到术语 prototype
在我搜索的许多资源中不断出现。如果可以避免的话,我只是不想走错路。
这两个是我发现最有希望的帖子:
- > Property of a Javascript Class calculated from other properties in same Class
- > Is it possible to use the computed properties to compute another properties in Vue?
我的问题
我如何计算出生日期(采用美国日期格式,不使用任何外部依赖项或库),将该值存储为属性,然后反复使用该属性计算同一对象的其他属性。注意:我不是在尝试构造函数和实例等。这只是一个基本的 JavaScript 对象。
如何使用即时计算的属性或方法作为存储值来计算同一对象的其他属性值?
如何使用现代 ES6 JavaScript 技术(包括
toLocaleString()
函数)从日期对象中获取月份名称字符串。
最佳答案
你拼错了 birthdatenumsusa
var birthdatenumsusa = [this.birthmonthnum,this.birthdayofmo,this.birthyear].join('/');
this.birthdatenumsusa = birthdatenumsusa;
在编写 JavaScript 时,camelCase 是约定俗成的做法,这样的小错误会更加明显。
关于javascript - 对象方法无法访问 ES6 JavaScript 对象的计算属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47982826/