美文网首页H5^Study
JS高级学习:内置对象添加原型方法/局部变量变成全局变量/案例:

JS高级学习:内置对象添加原型方法/局部变量变成全局变量/案例:

作者: Merbng | 来源:发表于2019-04-17 21:33 被阅读0次

    为内置对象添加原型方法

        //我们能否为系统的对象的原型中添加方法,相当于在改变源码
        //我希望字符串中有一个倒序字符串的方法
        String.prototype.myReverse=function () {
          for(var i=this.length-1;i>=0;i--){
            console.log(this[i]);
          }
        };
        var str="abcdefg";
        str.myReverse();
    
    
        //为Array内置对象的原型对象中添加方法
        Array.prototype.mySort=function () {
          for(var i=0;i<this.length-1;i++){
              for(var j=0;j<this.length-1-i;j++){
                  if(this[j]<this[j+1]){
                      var temp=this[j];
                    this[j]=this[j+1];
                    this[j+1]=temp;
                  }//end if
              }// end for
          }//end for
        };
    
        var arr=[100,3,56,78,23,10];
        arr.mySort();
        console.log(arr);
    
    
    

    把局部变量变成全局变量

    函数的自调用---自调用函数
    一次性的函数---声明的同时,直接调用了

    (function(){console.log("想静静")})();
    

    页面加载后,这个自调用函数的代码就执行完了

        (function (形参) {
          var num=10;//局部变量
        })(实参);
        console.log(num);
    
    

    如何把局部变量变成全局变量?
    把局部变量给window就可以了

        (function (win) {
          var num=10;//局部变量
          //js是一门动态类型的语言,对象没有属性,点了就有了
          win.num=num;
       })(window);
       console.log(num);
    

    通过自调用函数产生一个随机数对象,在自调用函数外面,调用该随机数对象方法产生随机数

    (function (window) {
          //产生随机数的构造函数
          function Random() {
          }
          //在原型对象中添加方法
          Random.prototype.getRandom = function (min,max) {
            return Math.floor(Math.random()*(max-min)+min);
          };
          //把Random对象暴露给顶级对象window--->外部可以直接使用这个对象
          window.Random=Random;
        })(window);
        //实例化随机数对象
        var rm=new Random();
        //调用方法产生随机数
        console.log(rm.getRandom(0,5));
    
    

    案例:随机小方块

    <script>
      //产生随机数对象的
      (function (window) {
        function Random() {
        }
        Random.prototype.getRandom=function (min,max) {
          return Math.floor(Math.random()*(max-min)+min);
        };
        //把局部对象暴露给window顶级对象,就成了全局的对象
        window.Random=new Random();
      })(window);//自调用构造函数的方式,分号一定要加上
    
    
      //产生小方块对象
      (function (window) {
        //console.log(Random.getRandom(0,5));
        //选择器的方式来获取元素对象
        var map=document.querySelector(".map");
    
        //食物的构造函数
        function Food(width,height,color) {
          this.width=width||20;//默认的小方块的宽
          this.height=height||20;//默认的小方块的高
          //横坐标,纵坐标
          this.x=0;//横坐标随机产生的
          this.y=0;//纵坐标随机产生的
          this.color=color;//小方块的背景颜色
          this.element=document.createElement("div");//小方块的元素
        }
        //初始化小方块的显示的效果及位置---显示地图上
        Food.prototype.init=function (map) {
          //设置小方块的样式
          var div=this.element;
          div.style.position="absolute";//脱离文档流
          div.style.width=this.width+"px";
          div.style.height=this.height+"px";
          div.style.backgroundColor=this.color;
          //把小方块加到map地图中
          map.appendChild(div);
          this.render(map);
        };
        //产生随机位置
        Food.prototype.render=function (map) {
          //随机产生横纵坐标
          var x=Random.getRandom(0,map.offsetWidth/this.width)*this.width;
          var y=Random.getRandom(0,map.offsetHeight/this.height)*this.height;
          this.x=x;
          this.y=y;
          var div=this.element;
          div.style.left=this.x+"px";
          div.style.top=this.y+"px";
        };
    
        //实例化对象
        var fd=new Food(20,20,"green");
        fd.init(map);
        console.log(fd.x+"===="+fd.y);
    
        
      })(window);
    </script>
    
    

    相关文章

      网友评论

        本文标题:JS高级学习:内置对象添加原型方法/局部变量变成全局变量/案例:

        本文链接:https://www.haomeiwen.com/subject/jtvowqtx.html