函数
函数的定义方式
- 函数声明方式function关键字(命名函数)
- 匿名函数
- new Function()
参数必须是引号
new Function(‘参数1’,‘参数2’,‘函数体’);
函数的调用方式
-
普通函数
//this指向的window function fn(){ alter(this); } fn();
-
对象的方式
//this指向的o var o={ sayHi:function(){ alter(1); } } o.sayHi();
-
构造函数
//this指向的ldh这个实例对象 原型对象里面的this指向的也是ldh function Start(){ alter(1); } let ldh =new Start()
-
绑定事件
//this指向的btn btn.onclick=function(){}
-
定时函数
//this指向的window setInterval(function(){},1000)
-
立即执行函数
//this指向的window (function(){ alter(1); })(); //自动调用
改变函数this的指向
-
call()
call第一个是调用函数
第二个改变函数内的this的指向
call主要作用可以实现继承
var o={ name:"andy" } function fn(a,b){ console.log(this); console.log(a+b); } fn.call(o,1,2);
-
apply()
参数必须以数组参数传递
主要应用 借助于内置对象求最大值
var arr=[1,2,55,78,99];
var max=Math.max.apply(null,arr);
console.log(max);
-
bind()
不会调用自身的函数,但是自身拷贝了一份,用var接收,也可以改变this的指向
var o={ name:"andy" } function fn(a){ console.log(this); } var result=fn.bind(o);//返回一个拷贝后的函数,这里不会自 动打印,apply(),call()会自动打印。 result();