javascript - 创建对象之间的链接

标签 javascript

我正在学习 JavaScript,我创建了三个具有一些属性的不同对象:Person、House 和 Car。

let House = function(city, postalCode, street, streetNumber){

  this.city = city;
  this.postalCode = postalCode;
  this.street = street;
  this.streetNumber = streetNumber;

  return {

    getAddress: function() {

      return {
        'address': {
          'city': city,
          'postalCode': postalCode,
          'street': street,
          'streetNumber': streetNumber
        }
      };

    }

  };

};

let Person = function(name, surname, yearOfBirth, monthOfBirth, dayOfBirth, bornCity, employment){

  this.name = name;
  this.surname = surname;
  this.yearOfBirth = yearOfBirth;
  this.monthOfBirth = monthOfBirth;
  this.dayOfBirth = dayOfBirth;
  this.bornCity = bornCity;
  this.employment = employment;

  return {

    getFullPerson: function() {

      return {
          'personalInformation': {
            'name': name,
            'surname': surname,
            'dateOfBirth': {
              'year': yearOfBirth,
              'month': monthOfBirth,
              'day': dayOfBirth
            },
            'bornCity': bornCity
          },
          'employment': employment,
          'home': getAddress(), // pseudocode
          'car': getCar() // pseudocode
      };

    }

  };

};

我想在这些对象之间创建一个链接,因为我需要调用,例如,谁住在房子里,反之亦然;但我不清楚如何做到这一点。

最佳答案

这里有一个方法:

let House = function(city, postalCode, street, streetNumber){

  this.city = city;
  this.postalCode = postalCode;
  this.street = street;
  this.streetNumber = streetNumber;

  return {

    getAddress: function() {

      return {
        'address': {
          'city': city,
          'postalCode': postalCode,
          'street': street,
          'streetNumber': streetNumber
        }
      };

    }

  };

};

let Person = function(name, surname, yearOfBirth, monthOfBirth, dayOfBirth, bornCity, employment, house, car){

  this.name = name;
  this.surname = surname;
  this.yearOfBirth = yearOfBirth;
  this.monthOfBirth = monthOfBirth;
  this.dayOfBirth = dayOfBirth;
  this.bornCity = bornCity;
  this.employment = employment;
  this.house = house;
  this.car = car;

  return {

    getFullPerson: function() {

      return {
          'personalInformation': {
            'name': name,
            'surname': surname,
            'dateOfBirth': {
              'year': yearOfBirth,
              'month': monthOfBirth,
              'day': dayOfBirth
            },
            'bornCity': bornCity
          },
          'employment': employment,
          'home': (house ? house.getAddress() : null), // pseudocode
          'car': (car ? car.getCar() : null)  // pseudocode
      };

    }

  };

};

let house1 = new House('city', 'postalCode', 'street', 'streetNumber');

let person1 = new Person('person', '1', 2020, 1, 1, 'bornCity', 'employment', null, null);
let person2 = new Person('person', '2', 2020, 1, 1, 'bornCity', 'employment', house1, null);


console.log(person1.getFullPerson());
console.log(person2.getFullPerson());

创建您想要与Person关联的任何HouseCar对象。然后,您可以选择在创建每个 Person 时传入 homecar 对象。每个 homecar 对象也将在 Person 对象中提供其功能。

关于javascript - 创建对象之间的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64711287/

相关文章:

javascript - 如何在 firebase 的 authStateObserver 中调用 .isNewUser()

javascript - 在窗口滑动时重定向到其他页面

javascript - 如何在 TypeScript 中创建 TryCast(.Net 等价物)

javascript - 获取文档的值

javascript - 如何在没有 "wrapper: false"的情况下通过 brunch 访问包装到命名空间中的函数?

javascript - 使用 Rivets.js 和 Backbone 深度模型绑定(bind)和访问嵌套元素

javascript - 在javascript中访问回调函数的变量 "outside"

javascript函数参数位置

javascript - 离屏静音自动播放视频在 Android 上不起作用

javascript - 我可以用 _lodash 替换 angular.copy 吗?它会更有效率吗?