zoukankan      html  css  js  c++  java
  • JS创建对象的几种方式

    1.Object构造函数模式

    var obj = new Object();

    obj.name = 'Tom';

    obj.age = 11;

    obj.setName = function(name){

      this.name = name;

    }

    适用场景:创建对象起始时候不确定对象内部的数据

    问题:语句太多

    2.对象字面量模式

    var p = {

      name:'Tom',

      age:'11',

      setName:function(){

        this.name = name;

      }

    }

    var p1 = {

      name:'Jack',

      age:'15',

      setName:function(){

        this.name = name;

      }

    }

    适用场景:创建对象时就知道内部需要哪些属性,同类型对象只创建一个

    问题:创建同类型的多个对象时候,要重复定义这些相同的属性和方法

    3.工厂模式(很少用)

    function createPerson(name,age){

      var obj = {

        name:name,

        age:age,

        setName:function(name){

          this.name = name;

        }

      }

      return obj;

    }

    使用场景:同类型对象需要创建多个

    问题:返回的对象都是Object类型,没有具体的类型

    4.自定义构造函数模式

    function Person(name,age){

      this.name = name;

      this.age = age;

      this.setName = function(name){

        this.name = name;

      }

    }

    var p = new Person('Tom',11);

    var p1 = new Person('Jack',15);

    适用场景:需要创建多个类型确定的对象

    问题:创建的对象的方法是相同的重复数据

    5.构造函数+原型的组合模式

    function Person(name,age){

      this.name = name;

      this.age = age;

    }

    Person.prototype.setName(name){//这样设置所有的对象的方法都去原型链上面找,最后都找到Person.prototype对象上,就不会存在每个对象都要花费内存来再属性上存一个相同的方法

      this.name = name;

    }

    var p = new Person('Tom',11);

    var p1 = new Person('jack',15);

    适用场景:需要创建多个具体类型的对象

  • 相关阅读:
    query_posts函数使用方法小结|wordpress技巧
    查看服务器被访问最大的ip
    Escape character is ‘^]’什么意思?怎么使用telnet
    telnet安装和使用教程
    开启了wpjam以后网站语言不能设置英文的解决方法
    wordpress获取当前页面链接
    woocommerce面包屑导航breadcrumb的修改
    如何将wordpress的the_title()进行大小写处理
    Sitemap Error : XML declaration allowed only at the start of the document解决方法
    mysql解析binlog日志
  • 原文地址:https://www.cnblogs.com/maycpou/p/12286573.html
Copyright © 2011-2022 走看看