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);");

原文地址:https://www.cnblogs.com/xjt360/p/4809117.html