zoukankan      html  css  js  c++  java
  • 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();
  • 相关阅读:
    Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题 swfUpload多文件上传
    对ExtJS4应用 性能优化的几点建议
    Extjs4中用combox做下拉带图片的下拉框
    当你的才华还撑不起你的野心时,就应该静下心来学习(转)
    占位符行为 PlaceHolderBehavior 的实现以及使用
    一个简单的TabItem样式。
    WPF实现Twitter按钮效果(转)
    模仿36。杀毒~button(转)
    WPF自适应可关闭的TabControl 类似浏览器的标签页(转)
    WPF绘制简单常用的Path(转)
  • 原文地址:https://www.cnblogs.com/siqi/p/3302436.html
Copyright © 2011-2022 走看看