javascript Function类型
阅读数:68 评论数:0
跳转到新版页面分类
html/css/js
正文
一、概述
函数实际上是对象,每个函数都是Function类型的实例,而且与其他引用类型一样具有属性和方法,因此函数名实际上也是一个指向函数对象的指针,因为函数名是指针,所以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");
第一种方式称为函数声明,解析器通过一个函数声明提升的过程,读取并将函数声明添加到执行环境中。
第二种方式称为函数表达式,只有执行到它所行,解析器才解析。
第三种方式使用Function构造函数,不推荐,因为会有两次解析。
因为函数名本身就是变量,所以可以当作参数进行传递,也可以从一个函数中返回另一个函数。
function callSomeFunction(someFunction,someArgument){
return someFunction(someArgument);
}
二、函数的内部属性
它是一个类数组对象,包含着传入函数中的所有参数,这个对象还有一个名为callee的属性。
指针,指向拥有这个arguments对象的函数。
function factorial(num){
if(num<=1){ return 1;}
else{
return num*arguments.callee(num-1);
}
}
这样,无论引用函数时使用的是什么名字,都可以保证正常完成递归调用。
当函数在严格模式下运行时,访问arguments.callee会导致错误。
指向函数据以执行的环境。当在全局作用域中执行函数时,指向window
保存着调用当前函数的函数的引用,如果在全局作用域中调用当前函数,它的值为null。
严格模式还有一个限制,不能为函数的caller属性赋值。
三、函数的属性和方法
因为函数是对象,因此函数也有属性和方法。
表示函数希望接收的命名参数的个数。
prototype属性不可枚举,它保存了所有实例方法。
这两个方法的用途都是在特定的作用域中调用函数。
(1)apply
apply方法接收两个参数,一个是运行函数的作用域,另一个参数数组,可以是Array的实例,也可以是arguments对象
function sum(num1,num2){
return num1+num2;
}
function callSum1(num1,num2){
return sum.apply(this,arguments);
}
function callSum2(){
return sum.apply(this,[num1,num2]);
}
(2)call
主要区别的接收参数的方式上,call要求把参数直接传递给函数。
function sum(num1,num2){
return num1+num2;
}
function callSum1(num1,num2){
return sum.call(this,num1,num2);
}
当运行环境this指向bind参数,并创建函数的实例
var o = {color: "blue"};
function sayColor(){
....
}
var fun = sayColor.bind(o);
相关推荐
一、概述
Function.prototype.bind 是 JavaScript 中的一个方法,用于创建一个新的函数,该函数在调用时将 this 绑定到指定的对象,并且可以传递预设的参数。bind
一、函数声明
function fn(arg0,arg1,arg2){
// 函数体
}
它的一个重特征,就是可以把它放在调用它的语句之后。
sayHi();
function sayHi()
echarts
是百度公司前端开发一个图表库,支持柱状图、饼状图、k线图、map图、热导向图、折线图。
主要采用canvas画图。完全免费。
hi
因为map的key可以为任何类型, 包括对象. 但是JSON语法, key只能为string. 所以不能直接对JSON.stringify(Map).
1.但是可以先把map转换为
在使用Vue中经常看到HTML中有标签属性前面添加了“:”,有些没有。
其实是v-bind的缩写。
v-bind
缩写: ‘:’
用法:动态绑定一个或多个特性,或一个组件prop到表达式。在绑定cl
一、package.json
package.json文件只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本。
二、package-lock.json
package-lock.json文件