《JS高程》--Function引用类型

《JS高程》--Function引用类型知识点


1.JS中函数的定义方法有哪些?

答:三种定义方法:

  • 函数声明语法:function sum(num1,num2){return num1+num2;}
  • 函数表达式:var sum=function(num1,num2){return num1+num2 ;};
  • 构造函数:var sum= new Function("num1","num2","return num1+num2");

2.以上三种函数定义方法的区别在哪里?

答:两个区别:

  • 函数声明和函数表达式比较常用,主要区别在于解析器的处理不同,第一种(函数声明)在所有代码执行前被解析;第二种(函数表达式)在执行到该行代码时被解析。
  • 构造函数方法不推荐使用,因为需要解析两次代码:首先常规解析代码,接着解析传入构造函数中的字符串。

3.函数名的本质是什么?

答:函数名实际是一个指向函数对象的指针,不会与某个函数绑定。

4.函数是否可以重载?【考察通常是一段程序,给结果】

答:函数没有重载。声明了两个同名的函数时,后面的函数将会覆盖前面的函数,原理为:函数名只是一个指向函数对象的指针。

5.函数作为值进行传递和作为结果返回的实例?

答:函数可以作为值来使用,不仅可以将一个函数传递给另一个函数,还可以将一个函数作为另一个函数的返回结果,实例如下:

  • var sum=function(num1,num2){return num1+num2; };

var anothersum=sum;//作为值传递

  • function callSomeFunction(someFunction,someArgument){

return someFunction(someArgumnet);//someFunction作为callSomeFunction的结果返回

}

6.函数内部的两个对象分别是什么?都各自有什么属性方法?

答:两个特殊的对象分别是arguments对象和this对象

  • arguments对象:类数组,存储传入函数中的所有参数,

callee属性,返回一个指向拥有这个arguments对象的函数的指针(即函数名),主要用于松散递归调用的紧密耦合

代码说明:sum.arguments.callee(num1,num2)等价于sum(num1,num2)

  • this对象:引用的是函数执行的环境对象--作用域有关

7.函数的其他属性和方法有哪些?

答:

  • 属性:length属性:函数希望接收的命名参数的个数;

prototype属性:是保存所有引用类型的实例方法的真正所在。通常含有valueOf()等方法。主要用于继承。

  • 方法:apply()和call()方法:在特定的作用域中调用函数。

bind()方法:用于创建一个函数的实例,且将this值绑定为传给bind()方法的参数。

例: var colorObject=sayColor.bind(o);

colorObject.sayColor();//该函数的this指向o

8.说说函数的apply()和call()方法的异同点?

答:

  • 含义相同,可以传递参数和扩充函数作用域,主要区别在于参数不同

apply()方法的参数为(this,arguments或者[num1,num2])//第二个参数为arguments 对象或者数组

call()方法的参数为(this,num1,num2)//需要逐个列举出来。

  • **扩充作用域的做法:

代码说明:window.color="red";

var o={color:"blue"};

var sayColor=function(){

alert(this.color);

};

 

sayColor();//red

sayColor.call(this);//red

sayColor.call(window);//red

sayColor.call(o);//blue

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值