犀牛——第8章函数 8.7函数属性、方法和构造函数

来源:互联网 发布:幽默app软件下载 编辑:程序博客网 时间:2024/05/18 00:54

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 可调用的对象







0 0
原创粉丝点击