【问题标题】:javascript setters and gettersjavascript setter 和 getter
【发布时间】:2013-04-26 16:26:21
【问题描述】:

这让我发疯了!这是我第一次使用设置器和获取器,我很难过。

var Person = function () {
  var address = setPersonAddress();

  this.setPersonAddress = function (a.getFullAddress()) {
    address = a.getFullAddress();
  };
};

var Address = function () {
  var address = "xyz";
  var city = "xyz";
  var state = "NY";
  var zip = "56783";


  this.fullAddress = function () {
    var name = address + ", " + city + ", " + state + ", " + zip;
    return name;
  };

  this.getFullAddress = function () {
    return fullAddress();
  };
};

var a = new Address();

我正在尝试将 Address 对象中的 fullAddress 分配给 Person 对象地址。我在 setPersonAddress 中正确引用 getFullAddress 吗?

【问题讨论】:

  • this.setPersonAddress = function (a.getFullAddress()) { this.setPersonAddress = function (a) {(var address = setPersonAddress(); 这也是,没有意义;))
  • @Yoshi 是的,我同意这会给出意外的令牌错误。
  • 是的,我有一种没有意义的感觉。 Yoshi的建议也不对?

标签: javascript setter getter


【解决方案1】:

你的代码有很多问题,你应该lint它来查看你的语法错误。 此外,您可能还想了解更多关于 Object Oriented JavaScript 的信息。

但是,这是您想要实现的目标(我认为):

演示: http://jsfiddle.net/FR8B8/

function Person(address) {
    this.setAddress(address);
}

Person.prototype = {
    setAddress: function (address) {
        this.address = address;
    },
    getAddress: function () {
        return this.address;
    }
};

function Address(fullAddress) {
    this.setFullAddress(fullAddress);
}

Address.prototype = {
    setFullAddress: function (fullAddress) {
        //naive parsing
        var addressParts = fullAddress.match(/(.+),(.+),(.+),(.+)/);

        this.fullAddress = fullAddress;
        this.address = addressParts[1];
        this.city = addressParts[2];
        this.state = addressParts[3];
        this.zip = addressParts[4];
    },

    getFullAddress: function () {
        return this.fullAddress;
    }
};

var a = new Address('15 test,Test City,Test State,J9A333'),
    p = new Person(a);

console.log(p.getAddress());

我正在尝试将 Address 对象中的 fullAddress 分配给 人员对象地址。我是否正确引用了 getFullAddress 设置个人地址?

这很容易完成,但是由于您已经有一个 Address 值对象,因此 Person 对象封装 Address 对象的实例而不是 string 可能会更好。

从下面的示例中,您可以通过p.getAddress().getFullAddress() 获取一个人的完整地址。请注意,可以在 Person 对象上创建一个 getFullAddress 函数成员来封装此逻辑以简化事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多