javascript中的原型和原型链&set和map

发布于:2022-11-07 ⋅ 阅读:(8) ⋅ 点赞:(0) ⋅ 评论:(0)

一.原型

     原型: 原型也叫作“原型对象”,任何一个js对象都有与之对应的原型

     获取对象的原型:对象 _proto_

      比如构造函数Tank,new一个实例对象t,求实例对象t的原型:t._proto_得到{constructor...}

对于对象{constructor...}再对它constructor,得到构造函数Tank,而对构造函数Tank求原型对象得到{constructor...},所以我们可以得到以下关系:

     对象._proto_==函数.prototype

     对象._proto_.constructor==函数

     对象._proto_.constructor=函数.prototype.constructor

     获取对象原型:函数.prototype

 二.原型链

          通过对象的__proto__属性一级一级向上查找得到一个有_proto_构成的链条,这个链条就是原型链。

          原型链的终点是object的原型

          Object是所有对象的顶层构造函数,即所有的对象都可以看做是由Object创建的

          instanceof用来判断一个实例对象是否是构造函数的实例

三.set以及set的应用

   set的应用:

<script>
        //Set中数据不会重复
        var s = new Set([1,2,3,4,5,6])
        s.add(1); //添加元素到 set,1存在添加不上
        //s.delete(3); //从set删除元素,
        if( s.has(2) ){  //判断某个元素是否在set中
            console.log('2存在');
        }
        s.forEach((item,index)=>{
            console.log(item,index);
        })
        // s.clear(); //清空 set
        console.log(s);
        console.log(s.size);
</script>

  set去重:

       //数组去重
        var arr = [1,2,3,4,4,3,2,1];
        //写法一
        var s = [...new Set(arr)];
        console.log(s);
        
        //写法二
        var s = Array.from( new Set(arr) )
        console.log(s);

  Map:

    <script>
        //Map是种数据结构,类似对象
        var m = new Map();
        m.set('name','李煜'); 
        //向map结构 添加数据
        m.set('age',30);
        m.set('sex',false);
        console.log( m.get('name') , m.get('age') , m.get('sex') );
        //从map结构中获取数据
        console.log( m.has('age') );
        m.forEach((item,key)=>{
            console.log(item,key);
        })
        console.log(m);
    </script>