javascript设置器和获取器

javascript设置器和获取器,javascript,setter,getter,Javascript,Setter,Getter,这让我快发疯了!这是我第一次使用setter和getting,我被难住了 var Person = function () { var address = setPersonAddress(); this.setPersonAddress = function (a.getFullAddress()) { address = a.getFullAddress(); }; }; var Address = function () { var address = "xyz

这让我快发疯了!这是我第一次使用setter和getting,我被难住了

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();

我正在尝试将fullAddress从Address对象分配给Person对象地址。我是否在SetPersonalAddress中正确引用了getFullAddress?

您的代码存在许多问题,您应该使用它来查看语法错误。 此外,您可能还想了解更多关于

然而,以下是您试图实现的目标(我认为):

演示:

我正在尝试将fullAddress from Address对象分配给 个人对象地址。我在中引用getFullAddress是否正确 SetPersonalAddress

但是,这很容易做到,因为您已经有了
地址
值对象,
个人
对象封装
地址
对象的实例,而不是
字符串


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

this.setPersonalAddress=function(a.getFullAddress()){
<这没有意义,您可能想要
this.setPersonalAddress=function(a){
var address=setPersonalAddress();
这也没有意义;)@Yoshi是的,我同意这会导致意外的令牌错误。是的,我有一种感觉没有意义。Yoshi的建议也不正确?
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());