JavaScript基础学习之-JavaScript权威指南--第八章函数属性方法构造函数

函数属性、方法和构造函数

一、函数属性

函数是js中特殊的对象,可以拥有属性。

funcation.length属性:代表形参的长度,只读属性,不允许更改
arguments.length代表的是实参长度
prototype属性:每个函数都有一个prototype属性,当把函数当做构造函数时,新创建的对象会从原型对象上继承属性。

二、函数方法

与其他语言不同,ECMAScript函数不介意传递进来多少个参数,也不在乎是什么类型。因为实参在内部是用一个类数组来表示的,函数接收到的始终是个类数组。
命名参数(形参)只提供便利,但不是必须的。

注意:js中方法本身是没有重载的,因为:
1.方法的本质就是一个Function类型的变量,如果出现同名的变量,会覆盖!
2.但是依靠函数内部属性argument来模拟重载!
//模拟函数重载!

function testArgument() {
if (arguments.length == 1) {
        alert("哈哈~1"+arguments[0]);
    } else if (arguments.length == 2) {
        alert("哈哈~2" + arguments[0] + "," + arguments[1]);
    } else {
        alert("哈哈~3");
    }
}
testArgument();
testArgument(1);
testArgument(1, 2);

prototype 是保存某个对象【所有实例】【共享属性】的地方。就是说,比如toString()和valueOf()等方法实际上都保存在prototype名下,只不过通过各自对象的实例访问罢了。
在创建自定义引用类型及实现继承时,prototype属性的作用是极为重要的。

call()和apply()方法:看作是某个对象的方法,通过调用方法的形式来间接调用函数。
第一个参数是要调用函数的母对象,即调用上下文。在函数体内通过this获得对他的引用。

f.call(o);
f.apply(o);

等价于
o.m = f();
o.m();
delete o.m;

ES5中第一个实参都会变成this的值,哪怕传入null和undefined。
ES3和非严格模式中,传入null和undefined会被全局对象替换,而其他原始值会被其他相应的包装对象替代。

bind()方法:ES5中新增加方法,主要作用是将函数绑定至某个对象。
当函数f()上调用bind()方法传入对象o时,这个方法将返回一个新的函数,调用新的函数时会当做o的方法进行调用。

三、函数构造函数

Function()构造函数

Function()构造函数可以传入任意数量的字符串实参,最后一个实参所表示的文本就是函数体。

  • Function()构造函数运行JavaScript在运行时动态的创建并编译函数
  • 每次调用Function()构造函数都会解析函数体,并创建新的函数对象。若在循环中创建效率低下。
  • Function()所创建的函数并不使用词法作用域,相反,函数体代码的编译总是会在顶层函数执行。

四、可调用对象

函数是可调用对象。所有的函数都是可调用的,但是并非所有的可调用对象都是函数。

可调用对象在两个JavaScript实现中不能算作函数。window.alert()和document.getElelmentById()使用了可调用的宿主对象但是本质上不是function对象。

RegExp对象。判断一个对象是否为函数和isArray类似。

[javascript] view plaincopy
function isFunction(x){  
    return Object.prototype.toString.call(x) === "[object Function]";  
}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值