对象方法

时间:2017-12-26 19:19:17

标签: javascript json oop ecmascript-6 locale

问题

这可能很简单,我不确定这是否(因为它处理对象)是一个“面向对象”的问题。我构建了一个JavaScript对象作为学习练习。我可以访问各种方法和属性,但是,依赖于计算属性的***方法返回undefined并给出错误。我不是JavaScript专家,大约6年前我开始学习jQuery。现在,我正在尝试自学香草JavaScript基础知识。由于ES6 / 2015似乎是我正在努力学习的最新方法。

我确实在PHP中有一些OOP经验,所以我认识到了一些OOP概念,但是我只是说我有点生疏。

当我尝试查看objActorInfo.birth.birthdateusa

的内容时,会发生问题
  

未捕获的ReferenceError:未定义birthdatenumsusa      在Object.get birthdateusa [as birthdateusa](:23:27)      at:1:20

当我在console.log中调用整个objActorInfo对象并检查birthdateusa属性时,我得到以下附加信息:

  

[例外:ReferenceError:未在Object.get中定义birthdatenumsusa   在Object.remoteFunction的birthdateusa [as birthdateusa](:23:27)   (: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一词在我正在搜索的许多来源中不断出现。如果我可以避免它,我只是不想走错了兔子洞。

这两个是我发现最有希望的帖子:

我的问题

  1. 如何计算birthdate(采用美国日期格式,不使用任何外部依赖项或库),将该值存储为属性,然后反复使用该属性计算同一对象的其他属性。注意:我不是在尝试构造函数和实例等。这只是一个基本的JavaScript对象。

  2. 如何使用动态计算的属性或方法作为存储值来计算同一对象的其他属性值?

  3. 如何使用现代ES6 JavaScript技术(包括toLocaleString()函数)从日期对象中获取月份名称字符串。

1 个答案:

答案 0 :(得分:1)

你拼错了birthdatenumsusa

    var birthdatenumsusa = [this.birthmonthnum,this.birthdayofmo,this.birthyear].join('/');
    this.birthdatenumsusa = birthdatenumsusa;

编写JavaScript时,camelCase是惯例,会产生更小的错误。