您的位置:首页 > Web前端 > JavaScript

js 点滴

2015-09-15 07:16 567 查看
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);");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: