zoukankan      html  css  js  c++  java
  • js 中创建对象

    对象是什么

    从JavaScript定义上讲对象是无序属性的集合,其属性可以包含基本值、对象或函数。也就是说对象是一组没有特定顺序的属性,每个属性会映射到一个值上,是一组键值对,值可以是数据或对象。

    最简单的对象

    JavaScript的一对花括号{}就可以定义一个对象,这样的写法实际上和调用Object的构造函数一样

    var obj={};
    var obj2=new Object();
    

      

    这样构建出来的对象仅仅包含一个指向Object的prototype的指针,可以使用一些valueOf、hasQwnProperty等方法,没有多大实际作用,自定义对象嘛总要有一些自定义的属性、方法神马的。

    var obj={};
                obj.a=0;
                obj.fn=function(){
                    alert(this);
                }
                
                var obj2={
                    a:0,
                    fn:function(){
                        alert(this);
                    }
                }
    

      

    可以在定义完对象后通过”.”为其添加属性和方法,也可以使用字面量赋值方法在定义对象的时候为其添加属性和方法,这样创建的对象,其方法和属性可以直接使用对象引用,类似于类的静态变量和静态函数,这样创建对象有一个明显缺陷——在定义大量对象的时候很费力,要一遍遍的写几乎是重复的代码。

    抽象一下

    既然是重复代码就可以抽象出来,用函数来做这些重复工作,在创建对象的时候调用一个专门创建对象的方法,对于不同的属性值只需要传入不同参数即可。

    function createObj(a,fn){
                    var obj={};
                    obj.a=a;
                    obj.fn=fn;
                    return obj;
                }
                
                var obj=createObj(2,function(){
                    alert(this.a);
                });
    

      

    这里先定义o为一个空的对象,然后为o设置了一堆属性。其实也可以直接给o属性的嘛,所以如果这样写也是ok的。

    function createPerson(name,age,job){
        var o = {};
        o.name = name;
        o.age = age;
        o.job = job;
        o.sayName = function(){
         alert(this.name);
        };
        return o;
    }
    
    var tanya = createPerson("tanya","30","female");
    var ansel = createPerson("ansel","30","male");
    
    tanya.sayName();
    ansel.sayName();
    

      还有一种办法是利用无敌的this,因为this就表示当前运行时的对象,将构造函数this的作用域指向新对象,将当前运行对象的属性和方法都赋给新对象,这样对象模式称为构造函数模式

    function Person(name,age,job){
        this.name = name;
        this.age = age;
        this.job = job;
        this.sayName = function(){
         alert(this.name);
        };
    }
    
    var tanya = new Person("tanya","30","female");
    var ansel =  new Person("ansel","30","male");
    
    tanya.sayName();
    ansel.sayName();
    

      

  • 相关阅读:
    初识人工智能(二):机器学习(三):sklearn数据集
    初识人工智能(二):机器学习(一):sklearn特征抽取
    Python3标准库:json JavaScript对象记法
    Python3标准库:uuid 全局唯一标识符
    Python3标准库:http.cookies HTTP cookie
    Python3标准库:base64 用ASCII编码二进制数据
    Python3标准库:urllib.robotparser Internet蜘蛛访问控制
    初识人工智能(一):数据分析(四):pandas数据分析
    ubuntu18.04.4安装k8s
    elasticsearch7.5.0+kibana-7.5.0+cerebro-0.8.5集群生产环境安装配置及通过elasticsearch-migration工具做新老集群数据迁移
  • 原文地址:https://www.cnblogs.com/kevin2016/p/5821513.html
Copyright © 2011-2022 走看看