zoukankan      html  css  js  c++  java
  • js 点滴

    1 方法的外部属性

    var test=function(num1,num2,num3){

             alert(num1+num2);

    }

        alert(test.length);//方法的属性lenght:形参的个数

    2 this

      函数的作用域

       

    3 call aply

    function each(arr,func){

       if(arr instanceof Array){

          for(var i=0;i<arr.length;i++){

                     var item=arr[i];

                   //通过函数对象的call/apply方法改变函数的作用域(为调用的函数的this赋值)

                   //func.call(item,i,item);

                   func.apply(item,[i,item]);//apply后面传的是数组 

          }

      }

    }

        var arr=[1,2,3,4,5];

       each(arr,function(index,item){

        alert(this);

       })

    其实apply和call真正的强大用途在于,能够扩充函数赖以动作的作用域

    这样扩充的最大好处就是对象不需要与方法有任何耦合关系

    4 eval

     eval方法可以直接调用浏览器的js引擎,直接执行传入的js代码字符串

      var str="var i=0;";//eval中创建的变量就是添加到了当前eval所在的执行环境,全局执行环境下 调用eval创建变量那就添加到了window下

      eval(str1);

    function testEval(){

      eval("var a=123;");//在方法中调用eval创建变量,那么这个变量就添加到了函数的作用域中(局部变量)

    }

     5 

      alert(object instanceof Function);//true 说明object 就是一个方法

    6

      function Person(){

       alert("person的构造函数"+this);//此时this是new关键字创建的对象

      }

       var p1=new Persion();//方法名相当于类名,方法体相当于类的构造函数

    7 方法的3种创建方式

     1 声明式方法 :有浏览器优先级 预先创建声明式方法对象 然后才执行页面的js代码

        function test(){

           alert("test");

         }

      2 匿名变量方式 方法(非声明式)

      var test2=function(){

       alert("test2");

       }

      3 创建对象方式

       var test3=new Function("x","y","alert('test3,x='+x+',y='+y);");

  • 相关阅读:
    Anaconda下载(改变了镜像路径,下载速度很快!!!)
    Class类文件结构
    JVM类加载过程
    端口占用问题解决办法(以1099端口为例)
    JVM垃圾回收算法(最全)
    Java多线程学习(总结很详细!!!)
    Shuffle过程
    RSA_RSA算法原理(一)
    Maven_根据不同个环境打包, 获取不同的配置文件等等
    Maven_如何为开发和生产环境建立不同的配置文件 --我的简洁方案
  • 原文地址:https://www.cnblogs.com/xjt360/p/4809117.html
Copyright © 2011-2022 走看看