• javascript 创建对象的几种方式


    1.

    //基于已有对象扩充其属性和方法
    var
    object = new Object(); object.name = "zhangsan"; object.sayName = function(name) { this.name = name; alert(this.name); } object.sayName("lisi");

    2.

    //工厂方式创建对象
    function get()
    {
        alert(this.username + ", " + this.password);
    }
    //让一个函数对象被多个对象所共享,而不是每一个对象拥有一个函数 对象。
    function createObject(username, password)
    {
        var object = new Object();
    
        object.username = username;
        object.password = password;
    
        object.get = get;
    
        return object;
    }
    
    var object = createObject("zhangsan", "123");
    var object2 = createObject("lisi", "456");
    
    object.get();
    object2.get();

    3.

    //构造函数方式 
    function
    Person() { //在执行第一行代码前,js引擎会为我们生成一个对象 this.username = "zhangsan"; this.password = "123"; this.getInfo = function() { alert(this.username + ", " + this.password); } //此处有一个隐藏的return语句,用于将之前生成的对象返回 } var person = new Person(); person.getInfo();

    4.

    //如果使用原型方式对象,那么生成的所有对象会共享原型中的属性, 
    
    这样一个对象改变了该属性也会反应到其他对象当中。
    Person.prototype.username = new Array();
    Person.prototype.password = "123";
    
    Person.prototype.getInfo = function()
    {
        alert(this.username + ", " + this.password);
    }
    
    var person = new Person();
    var person2 = new Person();
    
    person.username.push("zhangsan");
    person.username.push("lisi");
    person.password = "456";
    
    person.getInfo();
    person2.getInfo();

    5.

    //使用原型+构造函数方式来定义对象
    //使用原型+构造函数方式来定义对象,对象之间的属性互不干扰,各 
    
    个对象间共享同一个方法 
    function Person()
    {
        this.username = new Array();
        this.password = "123";
    }
    
    Person.prototype.getInfo = function()
    {
        alert(this.username + ", " + this.password);
    }
    
    var p = new Person();
    var p2 = new Person();
    
    p.username.push("zhangsan");
    p2.username.push("lisi");
    
    p.getInfo();
    p2.getInfo();

    6.

    // 动态原型方式:在构造函数中通过标志量让所有对象共享一个  方法,而每个对象拥有自己的属性。 
    function Person()
    {
        this.username = "zhangsan";
        this.password = "123";
    
        if(typeof Person.flag == "undefined")
        {
            alert("invoked");
            
            Person.prototype.getInfo = function()
            {
                alert(this.username + ", " + this.password);
            }
    
            Person.flag = true;
        }
    }
    
    var p = new Person();
    var p2 = new Person();
    
    p.getInfo();
    p2.getInfo();
  • 相关阅读:
    看淘宝营销api 文档有感
    创业公司如何做好数据驱动的开发工作
    docker 常见错误总结
    从npm 角度理解 mvn 的 pom.xml
    best practices for designing web api
    我对自动化测试的一些认识
    Docker学习笔记
    Docker命令学习
    JVM学习笔记三:垃圾收集器与内存分配策略
    JVM学习笔记二:JVM参数
  • 原文地址:https://www.cnblogs.com/siqi/p/3302436.html
Copyright © 2020-2023  润新知