难的地方要来了
函数进阶
目标:
我们以前定义函数的方法有两种,命名函数和匿名函数,今天学习第三种,根据大写的F我们可以看出这是一个构造函数
语法格式: new Function('参数1', '参数2', '函数体') 注意函数体是字符串形式
但是应该能感觉到这个方法很麻烦吧,参数和函数体都要用字符串书写...
另外,我们还能得出结论,所有函数都是Function的实例(对象),我们可以打印一下看看
得到的是true,所以也是一个对象
老师顺便给我们总结了以前学过的所有函数的调用方法:
this指向
这些this的指向,是当我们调用函数的时候确定的.调用的方式的不同决定了this指向的不同,一般指向我们的调用者
改变函数内部this指向
JavaScript为我们专门提供了一些函数方法来帮助我们更优雅的处理函数内部this的指向问题,常用的有bind(), call(), apply()三种方法.
apply( )方法
apply方法调用一个函数.简单理解为调用函数的方式,但是它可以改变函数this指向
function.apply(thisArgs, [argsArray])
apply的主要应用: 比如说我们可以利用apply借助于数学内置对象求最大值或最小值等
bind( )方法
bind( )方法不会调用函数,但是能改变函数内部this指向
function.bind(thisArg, arg1, arg2, ...)
因为bind( )方法不会调用函数,所以会有一个返回值,返回值就是我们function改造完的原函数的拷贝,就是产生了一个新的函数,返回给我们
我们做个按钮的例子感受一下,当我们点击了按钮以后就禁用按钮,xx秒后才可以再次点击(很常见的例子吧,发送手机验证码那种)
但是还是有点不足,万一btn改了名字呢?所以我们可以将btn换成this
今天就到这啦,明天继续,现在要去学别的了!