美文网首页
JS 函数的声明和调用

JS 函数的声明和调用

作者: 为什么要简称 | 来源:发表于2019-11-16 17:21 被阅读0次

函数的定义方式

1.自定义函数(命名函数)

funtion fn(){};

2.函数表达式(匿名函数)

var fun = funtion fn(){};

3.使用new Funtion('p1', 'p2', '函数体')

//函数体用字符串的形式写入
var f = new Funtion('p1', 'p2', 'console.log(p1+p2)');
f(1, 2)

所有函数都是Funtion的一个实例(对象)
函数也是一种对象

函数的调用方式

1.普通函数

funtion fn(){ console.log('nihao')};
//调用
fn();
//或者
fn.call()

2.对象的方法

var x = {
  sayHi:funtion(){
    console.log('nihao');
  }
}
//调用
x.sayHi();

3.构造函数

funtion Star(){};
//调用
new Star();

4.绑定事件函数

btn.onclick = function(){};
//点击按钮进行调用

5.定时器函数

setInterval(funtion(){}, 1000);

6.立即执行函数

(funtion(){
  console.log('nihao');
})();

this的指向问题

this的指向是当我们调用函数的时候确定的,调用方式的不同决定了this的指向不同
调用方式           this指向
普通函数调用         window(普通函数是window调用的)
构造函数调用         实例对象,原型对象里面的方法也指向实例对象
对象方法调用         该方法所属对象
事件绑定方法         绑定事件的对象
定时器函数           window
立即执行函数         window

改变函数内部this的指向

JavaScript提供了一些函数方法帮我们更优雅的处理函数内部的this指向问题,常用的有bind()、call()、apply()三个方法

1.call方法
var t = {
  name:'tom'
}

funtion fn(){
  console.log(this);
}

fn.call()  //这时候fn函数中的this指向window

fn.call(t)  //这时fn函数中的this指向了t对象

这个特性可以用在继承中

funtion Father(uname , age){
  this.uname = uname;
  this.age = age;
}
funtion Son(uname, age){
  //通过call函数将father中的this指向了son
  //son继承了father的构造函数,拥有了uname和age这两个属性
  Father.call(this, uname, age);
}

2.apply方法

apply()和call()作用一样(参数不同),可以调用一个函数,简单理解为调用函数的方式,但是它可以改变函数的this指向
fun.apply(thisArg, [argsArray]) (参数必须是数组(伪数组))
apply主要应用在数组方面

//数组中没有求最大最小值的方法,但是Math中有
//可以使用apply方法实现
var arr = [1, 2, 3, 4, 1];
var max = Math.max.apply(Math, arr);
var min = Math.max.apply(Math, arr);
console.log(max, min);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
3.bind方法

bing()方法不会调用函数,但是可以改变函数内部this的指向
fun.bind(thisArg, arg1, arg2, ...)
返回原函数改造后的一个拷贝

相关文章

  • 模拟异步函数

    异步函数实现机制(async.js) 实现了支持同步函数和异步函数的声明 声明异步函数 调用异步函数

  • JS 函数的声明和调用

    函数的定义方式 1.自定义函数(命名函数) 2.函数表达式(匿名函数) 3.使用new Funtion('p1',...

  • js基础

    js基础 函数 重点掌握 ​ 如何声明,如何调用,如何写函数 声明 ​ function 函数名(...

  • JS之函数的声明和调用

    今天用markdown来写,方便写js代码,富文本不会用,今天有点愁,不说了,直接讲知识点!最下面还有面试一般会问...

  • JS笔记11:JS函数

    1、函数声明与调用 2、形参 VS 实参 3、函数返回与自调用 4、函数作为参数 参考 1、js中函数声明的三种方...

  • iOS开发技巧之:JS调用WKWebview(简单)

    js端调用如下 oc调用如下 说明: native主动声明js的一个全局变量,并实现注入js的函数,即可正常调用了。

  • 函数声明和函数调用

    函数声明定义函数特点 和变量的声明会前置一样,函数声明同样会前置,如果我们使用函数表达式那么规则和变量一样 用函数...

  • 16. 函数与作用域

    函数声明和函数表达式的区别 函数声明 声明不必放在调用的前面 函数表达式 声明必须放到调用的前面 变量与函数的声明...

  • TS函数

    函数就是特殊的对象,能被调用的对象就是函数TS包含了JS所有内容声明 调用函数 实际如下 重要的话this 就是 ...

  • js函数使用规则

    第一种:传统方式 通常我们声明函数规则为先声明后调用,但是js中这种声明方式有预加载功能,允许我们先调用函数,再声...

网友评论

      本文标题:JS 函数的声明和调用

      本文链接:https://www.haomeiwen.com/subject/mquyictx.html