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

    1、通过字面量的方式直接创建

    var obj = {"name":'jack','age':'18'}

     2、工厂模式

    弊端:没有解决对象的识别问题,即怎么知道一个对象的类型。 

    function createPerson(name, age){
        var obj = new Object();
        obj.name = name;
        obj.age = age;
        obj.showName = function(){
            console.log(this.name);
        }
        return obj;
    }
    
    var person1 = createPerson('Jack','18');
    person1.showName();  //Jack

    3、构造函数模式

    function Person(name, age){
        this.name = name;
        this.age = age;
        this.showName = function(){
            console.log(this.name);
        }
    }
    
    var person2 = new Person('abccc','22');
    var person3 = new Person('wang','30');
    console.log(person2 instanceof Object); //true
    console.log(person2 instanceof Person); //true

    进一步优化

    function Person(name, age){
        this.name = name;
        this.age = age;
        this.showName = showName;
    }
    function showName(){
        console.log(this.name);
    }

    构造函数模式与工厂模式相比:
    1、没有显式的创建对象
    2、直接将属性和方法赋给了this对象
    3、没有return语句
    要创建person的实例,必须使用new操作符,以这种方式调用构造函数实际上会经历4个步骤:
     1、创建一个新对象
    2、将构造函数的作用域赋给新对象
    3、执行构造函数中的代码
    4、返回新对象

    4、原型模式

    function Person(){}
    Person.prototype.name = 'Wangjing';
    Person.prototype.age = '19';
    Person.prototype.showName = function(){
        console.log(this.name)
    }
    var person1 = new Person();
    console.log(person1.name) // Wangjing

    原型对象的问题 
    原型模式最大问题是由其共享的本性所导致的。 
    对于包含引用类型值的属性来说,问题较为突出 

    5、构造和原型的混合方式

    创建自定义类型的最常用的方式,就是组合使用构造函数模式与原型模式。构造函数模式用于定义实例属性,原型模式用于定义方法和共享的属性,这样每个实例都有自己的一份实例属性的副本,又同时共享着对方法的引用,最大限度的节省了内存。 

    function Person(name,age){
        this.name=name;
        this.age=age;
    }
    Person.prototype.showName=function(){//写在构造方法外面
        console.log(this.name);
    }
    var person1=new Person('key',18);
  • 相关阅读:
    50种方法巧妙优化你的SQL Server数据库
    sql server数据库中选出指定范围的行的sql语句写法
    如何开启SQLSERVER数据库缓存依赖优化网站性能
    网站项目建设流程概述
    一个flash网页图片播放器
    ASP.NET中备份sqlserver数据库的方法
    ASP.NET(C#)实现一次性上传多张图片(多个文件)
    GridView使用技巧之:新增记录、GridView内数据验证、删除信息提示等
    FreeTextBox控件上传图片到指定的绝对路径的改进
    Linux环境下的32位与64位
  • 原文地址:https://www.cnblogs.com/qiye2016/p/9015524.html
Copyright © 2011-2022 走看看