javascript - 在构造函数内声明属性

标签 javascript

我强烈怀疑运行下面列出的代码片段时出现的错误是因为 JavaScript 不允许在构造函数内部声明属性,但我不能确定。

var Person = function(firstName, lastName)
{
  getName: function() {
    return this.firstName + ' ' + this.lastName;
  }
};

var person = new Person('Joe', 'Bloggs');

alert('Hello, ' + person.getName() + "!");

/*
Exception: SyntaxError: function statement requires a name
@Scratchpad/2:4
*/

您能确认我的怀疑是否正确吗?如果是,那么添加属性的方法是:

  1. 要使用对象字面量语法吗?

    var Person = function(firstName, lastName)
    {
      this.firstName = firstName;
      this.lastName = lastName;
    };
    
    var person = { // object literal
      getName: function() {
    
        return this.firstName + " " + this.lastName;
      }
    };
    
  2. 或者,将属性添加到构造函数的原型(prototype)中?

    var Person = function(firstName, ..) { ... }
    Person.prototype.getName = ...;
    

最佳答案

我认为 JavaScript 处理这一行:

getName: function() {
    return this.firstName + ' ' + this.lastName;
  }

labeled function declarations 。你想要的可能是这样的:

this.getName = function() {
    return this.firstName + ' ' + this.lastName;
  }

关于javascript - 在构造函数内声明属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40277418/

相关文章:

javascript - 通过 id 链接时应用样式

javascript - jquery 多重选择 x Rails 编辑操作

javascript - React 中的实例

javascript - css 或 javascript 中的简单飞行文本?

javascript - 如何获取模态框jquery UI的输入值

javascript - 为什么我会收到此错误 "Error: Cannot enqueue Handshake after already enqueuing a Handshake."?

javascript - 存储越来越多的数字以继续刷新?

Javascript:按 li 中 span 的内容排序列表

javascript - meteor +物质化: collapsable in for each doesn't work

javascript - 如何加载带有变量的方法?