zoukankan      html  css  js  c++  java
  • javascript中的对象

    (1)基于已有的对象,扩充其属性和方法

    View Code
    var obj=new Object();
    obj.name="小张";
    obj.sayName=function(name){
    this.name=name;
    return this.name;
    }

    alert(obj.sayName("小李"));

    (2)工厂方式创建对象

    View Code
    function createOjbect(name,password){
    var obj=new Object();
    obj.name=name;
    obj.password=password;
    obj.get=function(){
    alert(this.name+ " : "+this.password);
    }
    return obj;
    }

    var obj1=createOjbect("小张",123);

    工厂方式创建对象改进

    View Code
        function createOjbect(name,password){
    var obj=new Object();
    obj.name=name;
    obj.password=password;
    obj.get=method;
    return obj;
    }
    //让一个函数函数对象被多个对象所共享,而不是每一个对象拥有一个函数对象。如果不这样做,就很消耗内存
    var method=function(){
    alert(this.name+ " : "+this.password);
    }

    var obj1=createOjbect("小张",123);
    obj1.get();

    (3)构造函数创建对象

    View Code
    function person(name,password){
    //在执行第一句代码前,js引擎为我们生成一个对象
    this.name= name;
    this.password=password;
    this.getInfo=function(){
    alert(this.name+" : "+this.password);
    }

    //此处有一个隐藏的return 语句,用户将之前生成的对象返回
    }

    var p=new person("小张",123); //此处用new 的方式告诉js引擎,我要生成对象了
    p.getInfo();

    (4)使用原型(prototype)方式创建对像

    View Code
    /*
    单纯使用原型方式定义类无法在狗仔函数中为属性赋初值,只能在对象生成后再去改变属性值
    如果使用原型方式对象,那么生成的所有对象会共享原型中的属性,这样一对象改变了属性也会反映到其他对象当中(只针对引用数据类型)
    */


    function person()
    {

    }
    person.prototype.name=new Array();
    person.prototype.sex="男";
    person.prototype.getInfo=function(){
    alert(this.name+" : "+this.sex);
    }

    var person1=new person();
    var person2=new person();

    person1.name.push("小张","小李子");
    person1.sex="女";
    alert(person1.name+" : "+person1.sex);
    alert(person2.name+" : "+person2.sex);

    原型+构造方式来构造对象

    View Code
    function person(){
    this.name=new Array();
    this.sex="男";
    }
    person.prototype.getInfo=function(){
    alert(this.name+" : "+this.sex);
    }

    var person1=new person();
    var person2=new person();
    person1.name.push("小明");
    person2.name.push("小张","小丽");

    person1.sex="女";

    person1.getInfo();
    person2.getInfo();

    (5)动态原型方式:在构造函数中通过标识量让所有对象共享一个方法,

    而每个对象拥有自己的属性.

    View Code
    function Person(){
    this.username="小张";
    this.password=123;
    if(typeof Person.flag=="undefined")   //此方法是对个对象共享的。
    {
    Person.prototype.getInfo=function(){
    alert(this.username+" : "+this.password);
    }
    Person.flag=true;  //标识量
    }
    }
    var person1=new Person();
    var person2=new Person();
    person2.password=345;
    person2.username="小明";

    person1.getInfo();
    person2.getInfo();










  • 相关阅读:
    SQL中sum(),avg()等统计结果为null的解决方法 dodo
    DRM内容数据版权加密保护技术学习(上):视频文件打包实现(转) dodo
    如何使用VS2008打开VS2010的解决方案 dodo
    winform程序读取和改写配置文件App.config元素的值 dodo
    Gamification:互联网产品的游戏化设计思路 dodo
    打包发布WinForm应用程序 dodo
    使用HttpHandler做文件过滤器,验证下载文件权限 dodo
    c# cookie使用 dodo
    Balsamiq Mockups 小技巧 dodo
    Snacktools:一套基于Web应用的富媒体编辑器 dodo
  • 原文地址:https://www.cnblogs.com/unbreakable/p/2431459.html
Copyright © 2011-2022 走看看