Javascript——对象构造和利用——深入理解

Javascript——对象构造和利用——深入理解,javascript,typescript,oop,object,Javascript,Typescript,Oop,Object,谁能告诉我: 如何根据不同的开发场景选择对象结构 到目前为止,与其他模式相比,哪种模式是一种良好的发展模式 如果你有机会开发一个完整的银行/社交网络/网上购物(如亚马逊、易趣)项目,你会使用哪一个?为什么 这只是为了从底层获得足够的理解 1。对象构造函数: var person = new Object(); person.name = "Demo name", person.getName = function(){ return this.name ; }; var person =

谁能告诉我:

  • 如何根据不同的开发场景选择对象结构

  • 到目前为止,与其他模式相比,哪种模式是一种良好的发展模式

  • 如果你有机会开发一个完整的银行/社交网络/网上购物(如亚马逊、易趣)项目,你会使用哪一个?为什么

  • 这只是为了从底层获得足够的理解

    1。对象构造函数:

    var person = new Object();
    person.name = "Demo name",
    person.getName = function(){
      return this.name ; 
    };
    
    var person = { 
      name : "Demo name",
      getName : function (){
       return this.name
      } 
    } 
    
    function Person(name){
      this.name = name
      this.getName = function(){
        return this.name
      } 
    } 
    
    function Person(){};
    Person.prototype.name = "Demo name";
    
    function Person(name){
      this.name = name;
    } 
    Person.prototype.getName = function(){
      return this.name
    } 
    
    var person = new function(){
      this.name = "Demo name"
    } 
    
    使用Object.create()方法: var a=Object.create(null)

    2。文本构造函数:

    var person = new Object();
    person.name = "Demo name",
    person.getName = function(){
      return this.name ; 
    };
    
    var person = { 
      name : "Demo name",
      getName : function (){
       return this.name
      } 
    } 
    
    function Person(name){
      this.name = name
      this.getName = function(){
        return this.name
      } 
    } 
    
    function Person(){};
    Person.prototype.name = "Demo name";
    
    function Person(name){
      this.name = name;
    } 
    Person.prototype.getName = function(){
      return this.name
    } 
    
    var person = new function(){
      this.name = "Demo name"
    } 
    
    3。函数构造函数:

    var person = new Object();
    person.name = "Demo name",
    person.getName = function(){
      return this.name ; 
    };
    
    var person = { 
      name : "Demo name",
      getName : function (){
       return this.name
      } 
    } 
    
    function Person(name){
      this.name = name
      this.getName = function(){
        return this.name
      } 
    } 
    
    function Person(){};
    Person.prototype.name = "Demo name";
    
    function Person(name){
      this.name = name;
    } 
    Person.prototype.getName = function(){
      return this.name
    } 
    
    var person = new function(){
      this.name = "Demo name"
    } 
    
    4。原型:

    var person = new Object();
    person.name = "Demo name",
    person.getName = function(){
      return this.name ; 
    };
    
    var person = { 
      name : "Demo name",
      getName : function (){
       return this.name
      } 
    } 
    
    function Person(name){
      this.name = name
      this.getName = function(){
        return this.name
      } 
    } 
    
    function Person(){};
    Person.prototype.name = "Demo name";
    
    function Person(name){
      this.name = name;
    } 
    Person.prototype.getName = function(){
      return this.name
    } 
    
    var person = new function(){
      this.name = "Demo name"
    } 
    
    5。功能/原型组合:

    var person = new Object();
    person.name = "Demo name",
    person.getName = function(){
      return this.name ; 
    };
    
    var person = { 
      name : "Demo name",
      getName : function (){
       return this.name
      } 
    } 
    
    function Person(name){
      this.name = name
      this.getName = function(){
        return this.name
      } 
    } 
    
    function Person(){};
    Person.prototype.name = "Demo name";
    
    function Person(name){
      this.name = name;
    } 
    Person.prototype.getName = function(){
      return this.name
    } 
    
    var person = new function(){
      this.name = "Demo name"
    } 
    
    6。单身汉:

    var person = new Object();
    person.name = "Demo name",
    person.getName = function(){
      return this.name ; 
    };
    
    var person = { 
      name : "Demo name",
      getName : function (){
       return this.name
      } 
    } 
    
    function Person(name){
      this.name = name
      this.getName = function(){
        return this.name
      } 
    } 
    
    function Person(){};
    Person.prototype.name = "Demo name";
    
    function Person(name){
      this.name = name;
    } 
    Person.prototype.getName = function(){
      return this.name
    } 
    
    var person = new function(){
      this.name = "Demo name"
    } 
    
  • 这是不可能的。与文字相比,它没有任何好处,只是速度慢得多,可读性差

  • 这总是一个不错的选择

    const user = { name: "Jonas", session: 1234 };
    
  • 应该使用而不是2。如果在设置对象时有其他逻辑(例如,如果用户被创建,则为其生成会话),或者如果必须在多个位置创建特定对象。然而,我不赞成新的
    操作符,我只想:

    function createUser(name) {
      return { name, session: createSession() }
    }
    
    function logout(user) {
     user.session = undefined;
    }
    
    
  • 不确定应该是什么,在原型上拥有属性很少有意义

  • 如果您支持OOP,这是一个很好的选择,但是现在我会使用
    语法,因为它更容易阅读(特别是对于来自另一种语言的程序员)。通过将方法移动到原型中,它们在实例之间共享,如果创建了大量实例,这将降低内存和性能成本

    class User {
      constructor(name) {
        this.name = name;
      }
      login() {
        this.session = 1234;
      }
    }
    
  • 没有意义,用1。反而

  • 这是不可能的。与文字相比,它没有任何好处,只是速度慢得多,可读性差

  • 这总是一个不错的选择

    const user = { name: "Jonas", session: 1234 };
    
  • 应该使用而不是2。如果在设置对象时有其他逻辑(例如,如果用户被创建,则为其生成会话),或者如果必须在多个位置创建特定对象。然而,我不赞成新的
    操作符,我只想:

    function createUser(name) {
      return { name, session: createSession() }
    }
    
    function logout(user) {
     user.session = undefined;
    }
    
    
  • 不确定应该是什么,在原型上拥有属性很少有意义

  • 如果您支持OOP,这是一个很好的选择,但是现在我会使用
    语法,因为它更容易阅读(特别是对于来自另一种语言的程序员)。通过将方法移动到原型中,它们在实例之间共享,如果创建了大量实例,这将降低内存和性能成本

    class User {
      constructor(name) {
        this.name = name;
      }
      login() {
        this.session = 1234;
      }
    }
    
  • 没有意义,用1。反而