【问题标题】:Javascript -Object construction and Utilization - to get deep understand [closed]Javascript - 对象构造和利用 - 深入了解 [关闭]
【发布时间】:2019-04-17 12:24:58
【问题描述】:

谁能告诉我:

  1. 如何根据不同的开发场景选择对象构造?

  2. 与其他模式相比,到目前为止,哪种模式适合开发?

  3. 如果您有机会为银行/社交网络/在线购买(如亚马逊、eBay)等开发一个完整的项目,您会使用哪一个?为什么?

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

1.对象构造函数:

var person = new Object();
person.name = "Demo name",
person.getName = function(){
  return this.name ; 
};

使用 Object.create() 方法: var a = Object.create(null);

2。文字构造函数:

var person = { 
  name : "Demo name",
  getName : function (){
   return this.name
  } 
} 

3.函数构造函数:

function Person(name){
  this.name = name
  this.getName = function(){
    return this.name
  } 
} 

4.原型:

function Person(){};
Person.prototype.name = "Demo name";

5.功能/原型组合:

function Person(name){
  this.name = name;
} 
Person.prototype.getName = function(){
  return this.name
} 

6.单身人士:

var person = new function(){
  this.name = "Demo name"
} 

【问题讨论】:

    标签: javascript typescript oop object


    【解决方案1】:
    1. 是不行的。它对文字没有任何好处,只是速度较慢且可读性较差。

    2. 总是一个不错的选择。

      const user = { name: "Jonas", session: 1234 };
      
    3. 应该使用而不是 2. 如果您在设置对象时有其他逻辑(例如,如果创建了用户,则为他生成会话),或者如果您必须在多个位置创建某个对象。但是我不赞成 new 运营商,我会这样做:

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

    5. 如果您支持 OOP,这是一个不错的选择,但是现在我会使用 class 语法,因为它更易于阅读(尤其是对于其他语言的程序员)。通过将方法移动到原型中,它们可以在实例之间共享,如果创建了大量实例,这将降低内存和性能成本。

      class User {
        constructor(name) {
          this.name = name;
        }
        login() {
          this.session = 1234;
        }
      }
      
    6. 毫无意义,用 1 代替

    【讨论】:

      猜你喜欢
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 2015-02-01
      • 1970-01-01
      • 2019-05-13
      • 2017-10-08
      相关资源
      最近更新 更多