【问题标题】:Setting an object's value设置对象的值
【发布时间】:2014-06-04 03:54:48
【问题描述】:

我正在玩弄 javascript 中的对象,因为我正在学习如何在 JavaScript 中进行 OOP,并且来自 C#,我发现这里的情况完全不同。

到目前为止,这是我的代码:

/*JavaScript Objects*/

var employee = new Object();

employee.firstName = "";
employee.lastName = "";
employee.salary = "";
employee.vacationDays = "";
employee.age = "";
employee.yearsWorking = "";

var getFirstName = function(firstName){
    this.value = firstName;
}

我不确定这个函数是否正确,我现在正在做的是在 Chrome 上进行控制台并通过调用这样的函数来设置 firstName:

employee.getFirstName("Brandon");

但由于某种原因,属性firstName 仍然是""。对我在这里做错的事情有什么想法吗?

【问题讨论】:

  • 不是this.value = firstName;,而是this.firstName = firstName;
  • 顺便说一句:为什么在实际设置值时将其称为“getFirstName”?
  • @u_mulder 那还是不行。通过发布的代码,employee 引用的对象根本没有getFirstName() 方法。只有一个变量存储对Function 实例的引用。正如所发布的,employee.getFirstName("Brandon") 引发 TypeError 异常,因为“undefined 不是函数”或“对象 # 没有方法 'getFirstName'”。见devtoolsecrets.com

标签: javascript oop object


【解决方案1】:

改变这个。

 var getFirstName = function(firstName){
      this.value = firstName;
  }

收件人:

 employee.getFirstName = function(firstName){
    this.firstName= firstName;
  }

【讨论】:

  • 这很好,正如我打算做的那样。非常感谢! 5 分钟过后立即标记为答案。
【解决方案2】:

我知道只用链接回答不是 SO 中的首选方式,但我认为仅用几句话就不可能传递必要的知识 - 至少我无法做到这种情况。

page 将引导您完成从 C# 到 OO javascript 的路径

【讨论】:

    【解决方案3】:

    您似乎正在尝试使用名为“getFirstName”的函数设置值 试试看:

    employee.getFirstName = function(firstName){
        this.firstName = firstName;
    };
    

    【讨论】:

      猜你喜欢
      • 2021-12-06
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多