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

    1.通过new Object创建对象

    作用范围:
    用于属性名字和属性值不能确定的地方
    优点:
      编写方便
    缺点:
    1.需要写大量代码
    2.创建出来的对象都是Object对象
        var obj = new Object();
        obj.name = "张三"
        obj.age = 12;
        obj.setName=function (name) {
            this.name=name;
        }
        log(obj.name, obj.age);
    

     2.使用{}创建对象

    适用场景:
    适用于确定对象,确定方法,不需要创建很多个对象
    优点:
    书写方便
    缺点:
    1.不利于扩展性
    2.每次创建对象还需要有很多重复性的工作
    3.浪费内存
       var obj = {
            name: "张三",
            age: 12,
            setName: function (name) {
                this.name = name;
            }
        }
        log(obj.name,obj.age)
    

     3.使用工厂方法创建对象

    适用场景:
    用于有固定的属性的对象进行创建,不用在意其创建的对象是不是Object类型还是自定义类型
    优点:
    创建速度快,代码便捷
    缺点:
    浪费内存
    所有实例都是Object的实例对象
        function createPerson(name, age) {
            return {
                name: name,
                age: age,
                setName: function (name) {
                    this.name = name;
                }
            }
        }
        var p=createPerson("张三",12);
        log(p.name,p.age);
    

     4.使用函数创建对象

    适用范围:
    用于创建多个对象,并且有自己的实例对象属性
    优点:
    不是一直都是Object对象,可以是自己创建的对象
    缺点:
    1.浪费内存,特别是公用方法
        function Person(name,age) {
            this.name=name;
            this.age=age;
            this.setName=function (name) {
                this.name=name;
            }
        }
        var p=new Person("张三",11);
        log(p.name,p.age)
    

     5.原型链和函数进行创建对象

    适用场景:
    用于对于有公共方法的对象
    优点:
    优化内存,将方法放在了prototype中
    缺点:
    未涉及字段
        function Person(name,age) {
            this.name=name;
            this.age=age;
        }
        Person.prototype.setName=function (name) {
            this.name=name;
        }
        var p=new Person("小米",12);
        log(p);
        log(p instanceof Person)
    
  • 相关阅读:
    Polygon对象和Polyline对象的组成形式
    JavaScript脚本语言特色时钟
    洛谷——T P2136 拉近距离
    HDU——T 1498 50 years, 50 colors
    HDU——T 2119 Matrix
    HDU——T 1054 Strategic Game
    洛谷—— P2896 [USACO08FEB]一起吃饭Eating Together
    Django进阶之Form
    March 28 2017 Week 13 Tuesday
    March 27 2017 Week 13 Monday
  • 原文地址:https://www.cnblogs.com/lonecloud/p/7587206.html
Copyright © 2011-2022 走看看