Function对象属性和方法
/* var pattern = /^[\w]+\.(zip|rar|gz)$/; //|选择符必须用分组符号包含起来 var str = '123.7z'; alert(pattern.test(str)); function box(num1, num2) { //普通函数的声明方式 return num1 + num2; } alert(box(1, 2)); var box = function(num1, num2) { //使用变量初始化函数 return num1 + num2; }; alert(box(1,2)); var box = new Function('num1', 'num2', 'return num1 + num2'); //使用new的构造函数来声明函数 alert(box(1, 2)); alert(typeof box); //函数可以传递函数, //下面的例子很普通,不是作为函数来传递的,而是作为函数的返回值来传递的 function box(sum, num) { return sum + num; } function sum(num) { return num + 10; } var result = box(sum(10), 10); //20,10sum(10)这里传递的是函数的返回值,和普通的变量一样,没区别 alert(result); */ //要把函数本身作为参数传递,而不是函数的结果 function box(sum, num) { return sum(num); } function sum(num) { return num + 10; } var result = box(sum, 10); //这里sum是一个函数,当作参数传递到另外一个函数里,而不是函数的返回值 alert(result);
/* function sum(num) { if (num <= 1) { return 1; } else { return num * sum(num-1); //4 * 3 * 2 * 1 = 24 阶乘,递归 } } alert(sum(4)); function box(num) { if (num <= 1) { return 1; } else { return num * arguments.callee(num-1); //使用arguments.callee,调用自身,实现递归 } } alert(box(4)); //window是一个对象,而且是JS里面最大的对象,是最外围的对象 //alert(typeof window); window是对象,类型是对象,window表示全局 alert(this); //[object Window] this目前表示的是window,因为在window的范围下 alert(typeof this); //和window一模一样,所以this就是window var color = '红色的'; //这里color就是全局变量,而这个变量又是window的属性 //alert(window.color); //这里已经很好的说明color是window下的属性 alert(this.color); //同上 window.color = '红色的'; //相当于 var color = '红色的';???,是一样的 var box = { color : '蓝色的', //这里的color是box下的属性,也就是局部变量 sayColor : function() { alert(this.color); //这里this,我们确定了是代表的box对象。 } }; alert(this.color); box.sayColor(); window.color = '红色的'; function sayColor() { alert(this.color); //所以这里执行的时候是动态的,第一次在window下,第二次在box下 } sayColor(); //这里调用sayColor,其实范围还是在window下 var box = { color : '蓝色的' }; box.sayColor = sayColor; //这段代码相当于47行 box.sayColor(); //这里执行的是box里面的this.color function box(name, age) { return name + age; } alert(box.length); function box(num1, num2) { return num1 + num2; } function sum(num1, num2) { //apply和call可以冒充另外一个函数 return box.apply(this, [num1, num2]); //this表示window作用域,[]表示传递的参数 } function sum2(num1, num2) { return box.apply(this, arguments); //这个可以当数组传递,arguments } //alert(box(10,10)); //alert(sum(10,10)); alert(sum2(10,10)); function box(num1, num2) { return num1 + num2; } function sum(num1, num2) { return box.call(this, num1, num2); //call只是传递参数不同,其他和apply一样 } alert(sum(10,10)); */ var color = '红色的'; //全局 var box = { color : '蓝色的' //局部 }; function sayColor() { alert(this.color); } //sayColor(); //全局 //用call是实现对象冒充,冒充box下,冒充window下 //sayColor.call(window); //冒充window 红色的 //sayColor.call(this); //this就是window sayColor.call(box); //冒充box,作用域就在box对象里面,所以color就是蓝色的
本人无商业用途,仅仅是学习做个笔记,特别鸣谢小马哥,学习了IOS,另日语学习内容有需要文本和音频请关注公众号:riyuxuexishuji