犀牛——第8章函数 8.7函数属性、方法和构造函数
2015-09-05 10:58
267 查看
8.7 函数属性、方法和构造函数
因为函数也是对象,他们也可以拥有属性和方法,就像普通的对象可以拥有属性和方法一样。甚至可以用Function()构造函数来创建新的函数对象。8.7.1 length属性
arguments.length表示传入函数的实参的个数。函数的length属性是只读属性,表示在函数定义时给出的形参个数。
8.7.2 prototype属性
prototype属性表示原型对象,每一个函数都包含不同的原型对象。当将函数用做构造函数的时候,新创建的对象会从原型对象上继承属性。8.7.3 call()方法和apply()方法
call()和apply()看做是某个对象的方法,通过调用方法的形式来间接调用函数。call()和apply()的第一个实参是要调用函数的母对象,它是调用上下文,在函数体内通过this来获得对它的引用。要想以对象o的方法来调用函数f(),可以这样使用call()和apply():f.call(o);
f.apply(o);
每行代码和下面代码的功能类似
o.m = f; //将f存储为o的临时方法
o.m(); //调用它,不传入参数
delete o.m; //将临时方法删除
call()方法第一次调用上下文参数之后的所有实参就是要传入待调用函数的值。
f.call(o,1,2);
applay()方法实参都放入一个数组当中:.
f.apply(o,[1,2]);
8.7.4 bind()方法
bind()方法将函数绑定至某个对象。当在函数f()上调用bind()方法并传入一个对象o作为参数,这个方法将返回一个新的函数。function f(y){return this.x + y;}; //这个是待绑定的函数
var o = {x:1}; // 将要绑定的对象
var g = f.bind(o); //通过调用g(x)来调用o.f(x)
g(x) //=>3
8.7.5 toString()函数
大多数的toString()方法的实现都返回函数的完整源码。内容函数往往返回一个类似“[native code]”的字符串作为函数体。8.7.6 Function()构造函数
函数可以通过Function()构造函数来定义:var f = new Function("x","y","return x*y;");
等价于:
var f = function(x,y){return x*y;}
8.7.7 可调用的对象
相关文章推荐
- Android Api Demos登顶之路(五十七)Service Remote Service Binding options
- Java设计模式-1-概述
- TVS二极管和稳压二极管的区别
- Linux 进程间通信(一)(经典IPC:消息队列、信号量、共享存储)
- 2003 Can't connect to MySQL server on 'localhost' (10061)
- Android四种存储方式 sharedpreference,file,SQlite,contentprovider实现增删改查
- 参数在编译器决定
- n级台阶问题
- POJ 2255 二叉树由前序遍历中序遍历得到后序遍历
- Android 实现适配器中的子控件与Activity通信
- Tomcat基本知识
- Python爬虫框架--pyspider初体验
- [Leetcode-263] Ugly Number(丑陋数)
- 那些不能遗忘的知识点回顾——操作系统系列(笔试面试高频题)
- Tarjan算法求解最近公共祖先问题
- 【POJ2289】【多重匹配】【二分】【模板】
- Java 解析chm文件实战(原创)
- 剑指offer——面试题42:(一)翻转单词顺序
- PHP之——官方手册下载地址
- 乱七八糟记事本