Function 类型

来源:互联网 发布:淘宝官方店都是正品吗 编辑:程序博客网 时间:2024/06/05 06:26

函数内部属性

任何函数内部,都有两个特殊的对象,arguments 和 this。arguments为数组对象,包含传递的所有参数。this是它所处对象的作用域。

callee 属性

是 arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿名函数的递归或者保证函数的封装性

// 打印函数自身function calleeDemo() {    console.log(arguments.callee);}// 用于匿名函数的递归调用var sum = function(n){  if (n <= 0)  return 1;  else return n + arguments.callee(n - 1)}

比较一般的递归函数:

var sum = function(n){    if (1==n) return 1;    else return n + sum (n-1);}调用时:alert(sum(100));

在浏览器(客户端)中,window对象是js中最大的对象,也是最外围的。所有全局的变量都是window的属性。

apply and call

两者都是把函数绑定到另外的一个作用域下面,区别仅仅在于参数,

apply(thisArg,argArray);// 第一个参数是作用域,call(thisArg,[arg1,arg2…]); //第一个参数是作用域,第二个参数是一个数组function add(a,b)  {      alert(a+b);  }  function sub(a,b)  {      alert(a-b);  }  add.call(sub,3,1);  //4  用 add 方法替换 sub 方法,this 指向 sub。add.apply(sub, [3,1]); // add参数为数组  // 函数其实是一个对象,所以可以通过add.call 的方式调用属性。

常用的用法:
1. 查找数组里面最大的值(apply)
当数组中的元素不便一一列举或数组很大时 apply 方法很有用
Math.max.apply(null, [array]);

注: 当不把该函数指定到其它作用域下的时候,所以第一个参数可以写作null或者本身。
2. 判断数据的详细类型(call) 优点:更详细
Object.prototype.toString.call(value);// 返回的是 string 类型

可以准确的判断出8种数据类型和其它的js 原生类型。
比如会有 [object Date]
但是typeof 只会判断为 object。

使用typeof运算符的缺点是: null, array,Date等原生数据类型会判断为 object 类型, 并且返回的是 string 类型
console.log(typeof (typeof function(){})) // string

使用 instanceof 只能判断一个实例是不是属于一个对象

console.log(d instanceof Date());var d = new Date();
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 卡通猪 卡通背景 卡通女孩 卡通形象 卡通网 卡通动画 卡通照片 卡通猴 衣服卡通 小卡通人物 卡通数字 衣服卡通图 3d卡通人物 卡通插画 蝴蝶卡通 卡通动物画 小鸡卡通 卡通沙滩 卡通风景图 非主流卡通 卡通素材 人物卡通 背景卡通 经典卡通 动态卡通 卡通简笔画大全 可爱卡通图片 一家三口卡通图片 一家四口卡通图片 可爱卡通图案 卡通图片简笔画 可爱卡通人物 卡通素描图片 一家4口幸福卡通图片 呆萌卡通图片 ktkkt卡通站国语动画 卡通动物图片 天安门卡通图片 卡通造型馒头 高清卡通图片 卡通背景图片