这是一个好的JavaScript对象模型吗?(电话簿项目)

这是一个好的JavaScript对象模型吗?(电话簿项目),javascript,object,Javascript,Object,我需要创建一个电话簿。多亏了一个表单,我可以检索一个人的数据。我需要为此目的使用对象。我在一个方法的帮助下创建了一个phoneBook()对象,该方法允许在电话簿中添加一个人。 我决定(虽然没有被要求)将“person”概念分成两部分,结果是一个“person”对象和一个“AddressPerson”对象(同一个人可以有两栋房子:“我的裁缝很有钱!”:-) 这是声明Person对象的好方法吗我们可以创建一个没有地址的Person对象,然后像我使用“Person2”对象那样添加它吗 如果有人能帮助

我需要创建一个电话簿。多亏了一个表单,我可以检索一个人的数据。我需要为此目的使用对象。我在一个方法的帮助下创建了一个phoneBook()对象,该方法允许在电话簿中添加一个人。
我决定(虽然没有被要求)将“person”概念分成两部分,结果是一个“person”对象和一个“AddressPerson”对象(同一个人可以有两栋房子:“我的裁缝很有钱!”:-)

这是声明Person对象的好方法吗
我们可以创建一个没有地址的Person对象,然后像我使用“Person2”对象那样添加它吗

如果有人能帮助我,我将不胜感激。提前非常感谢!"

一些建议:

  • 将类(
    PhoneBook
    )更改为大写,将方法/属性(
    lastName
    add()
    )更改为小写
  • 方法参数上的“a”前缀是不需要的,因为在Javascript
    中,该前缀从不隐式使用
  • 方法应该以对象为参数。例如,
    add()
    应该是
    add(person)
    其中
    person
    是一个预先构造的
    person
    对象
  • 你为什么需要
    人员2
    ?这似乎是多余的
  • 人员
    的构造函数中,您复制
    地址
    的每个字段。通常只需执行
    这个.Address=Address
    就可以了。但是如果您想确保每个
    人员
    都有自己的
    地址
    实例,请在
    地址
    上提供一个
    克隆()
    方法
    • 一些建议:

      • 将类(
        PhoneBook
        )更改为大写,将方法/属性(
        lastName
        add()
        )更改为小写
      • 方法参数上的“a”前缀是不需要的,因为在Javascript
        中,该前缀从不隐式使用
      • 方法应该以对象为参数。例如,
        add()
        应该是
        add(person)
        其中
        person
        是一个预先构造的
        person
        对象
      • 你为什么需要
        人员2
        ?这似乎是多余的
      • 人员
        的构造函数中,您复制
        地址
        的每个字段。通常只需执行
        这个.Address=Address
        就可以了。但是如果您想确保每个
        人员
        都有自己的
        地址
        实例,请在
        地址
        上提供一个
        克隆()
        方法
        • 看看。这项工作有点像W3C

          JSLint由Douglas Crockford创建,Douglas Crockford是Yahoo!JavaScript的传播者和发明者

          JSLint的全部内容是:

          “JSLint是一个JavaScript程序 查找JavaScript中的问题 节目

          当C还是一个年轻的编程语言时 语言上,有几个共同点 不正确的编程错误 被原始编译器捕获,所以 一个名为lint的辅助程序被激活 开发了一个可以扫描源的 文件,查找问题

          随着语言的成熟 该语言的定义是 加强消除一些 不安全感和编译器得到了改善 在发出警告时。皮棉不再是白色的了 需要

          JavaScript与它的年龄相比是年轻的 语言。这本来是有意的 在网页中执行小任务,任务 Java对它来说太重了 笨拙的。但是JavaScript是一个非常有用的工具 有能力的语言,现在正在 用于大型项目。许多 旨在使 易于使用的语言是 对于较大的项目来说很麻烦。A. JavaScript需要lint:JSLint, JavaScript语法检查器和 验证器

          JSLint获取一个JavaScript源代码并 扫描它。如果它发现了问题,它就会 返回一条消息,描述 问题与近似位置 在源代码中。问题不在这里 当然,这是一个语法错误 通常是这样JSLint查看了一些 风格惯例以及 结构问题。这不能证明 你的程序是正确的。只是 提供另一组眼睛帮助 找出问题

          JSLint定义了一个专业子集 JavaScript,一种更严格的语言 比第3版的 ECMAScript语言规范。这个 子集与建议相关 在的代码约定中找到 JavaScript编程语言

          JavaScript是一种草率的语言,但是 里面有一个优雅的,更好的 语言。JSLint帮助您编程 用更好的语言,避免 大部分的污水。”

          看看。这项工作有点像W3C

          JSLint由Douglas Crockford创建,Douglas Crockford是Yahoo!JavaScript的传播者和发明者

          JSLint的全部内容是:

          “JSLint是一个JavaScript程序 查找JavaScript中的问题 节目

          当C还是一个年轻的编程语言时 语言上,有几个共同点 不正确的编程错误 被原始编译器捕获,所以 一个名为lint的辅助程序被激活 开发了一个可以扫描源的 文件,查找问题

          随着语言的成熟 该语言的定义是 加强消除一些 不安全感和编译器得到了改善 在发出警告时。皮棉不再是白色的了 需要

          JavaScript与它的年龄相比是年轻的 语言。这本来是有意的 在网页中执行小任务,任务 Java对它来说太重了 笨拙的。但是JavaScript是一个非常有用的工具 有能力的语言,现在正在 用于大型项目。许多 旨在使 易于使用的语言是 对于较大的项目来说很麻烦。A. JavaScript需要lint:JSLint, JavaScript语法检查器和 验证器

          JSLint获取一个JavaScript源代码并 扫描它。如果它发现
          function phoneBook(){
            this.Liste = new Array(); 
          }
          
          phoneBook.prototype.Add = function(){
             Liste.push(new Person(aLastName,aFirstName,aAddress));
          }
          
          function Person(aLastName,aFirstName,aAdd){
            this.LastName   = aLastName;
            this.FirstName  = aFirstName;
            this.Address = 
              new AddressPerson(aAdd.Street,aAdd.CP,aAdd.Town,aAdd.NumTel,aAdd.Email);
          }
          
          function Person2(aLastName,aFirstName){
            this.LastName   = aLastName;
            this.FirstName  = aFirstName;
            this.Address = 'unknow';
          }
          
          function AddressPerson(aStreet,aCP,aTown,aNumTel,aEmail){
            this.Street = aStreet;
            this.CP    = aCP;
            this.Town = aTown;
            this.NumTel = aNumTel;
            this.Email= aEmail;
          }
          
            this.Liste = new Array(); 
          
            this.Liste = []; // shorthand for creating an array. You can do the same with an object with {}
          
          function PhoneBook(){<br>
              this.liste = [];<br>
          }
          
          PhoneBook.prototype.add = function(person){<br>
             this.liste.push(person);<br>
          }
          
          function Person(lastName,firstName,address){<br>
              this.lastName   = lastName;<br>
              this.firstName  = firstName;<br>
              this.address = address;<br>
          }
          
          function AddressPerson(street,cp,town,numTel,email){<br>
              this.street = street;<br<
              this.cp     = cp;<br>
              this.town   = town;<br>
              this.numTel = numTel;<br>
              this.email  = email;<br>
          }
          
          // tests for the others :-))
          
          var phone = new PhoneBook();
          alert(phone.liste.length);
          var person = new Person(
              "aaaaaa",
              "bbbbbbb",
              new AddressPerson("zzzzz","87","rrrrr","22222","eeeee@uk.co")
          );
          alert(person.address.street);
          phone.add(person);
          alert(phone.liste.length);
          alert(phone.liste[0].address.numTel);
          
          function PhoneBook( person /*, ... */ ){
              this._liste = [];
          }
          
          PhoneBook.prototype.add = function(){
              var l = arguments.length;
              while(l--){
                  this._liste.unshift( arguments[l] );
              }
          }
          
          function Person( p ){
              this.lastName   = p.lastName;
              this.firstName  = p.firstName;
              this.address    = p.address === 'unknown' ? new Address( p.address ) : 'unknown';
          }
          
          function Address( a ){
              this.street = a.street;
              this.CP     = a.CP;
              this.town   = a.town;
              this.numTel = a.numTel;
              this.email  = a.email;
          }