js中Function引用类型常见有用的方法和属性详解
Function类型
函数由于是Function类型的一个实例,所以函数名就是一个指向函数对象的指针,不会与某个函数死死的连接在一起,这也导致了js中没有真正的重载,但好处是,函数对象可以作为另一个函数的参数或是返回值;
访问一个函数对象的指针而不是执行函数本身不能加括号
var func = new Function("x", "y", "return x + y");// 构造函数来实例化一个Function类型, 但不推荐使用 function func(x, y){ return x + y; }// 函数声明 js引擎会将所有的函数声明提升到顶部 var func = function (x, y){ return x + y };// 函数表达式 变量的赋值, 变量func保存着 function(x, y){ return x + y} 这个对象
Function类型中,有两个特殊的对象:arguments和this , 前者里面有传入函数中所有的参数,还有一个callee属性,这是个指针指向拥有这个属性的Function实例;而this这个指针指向执行环境,也就是Global类型的一个实例. 在浏览器中是一个窗口.
function b(){ console.log(arguments.callee); }
Function类型的属性和方法
length // Funciton实例期望接收形式参数的个数 prototype // apply();// 非继承的方法 // apply(Function实例运行的作用域:this, Array实例或arguments) call();// 非继承的方法 // call(Function实例运行的作用域:this, arg1, arg2, ...) // bind( X );// 将Function的实例的this指向 对象 X
除此之外,Function类型中还有一个特殊的属性:caller,这是个指针,在严格模式下不能对这个属性赋值.
Function类型一个实例a调用了Function类型的另一个实例b, 那么实例b中的caller属性就会指向实例a;
function a(){ b(); } function b(){ console.log(arguments.callee.caller); }
以上就是本次介绍的全部相关知识点,感谢大家的学习和对我们的支持。
相关推荐
-
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
本文实例讲述了JavaScript函数式编程(Functional Programming)声明式与命令式.分享给大家供大家参考,具体如下: 函数式编程属于声明式编程(declarative programming)的范畴,经常跟声明式编程一块儿讨论的是命令式编程(imperative programming),因为它们是两种不太一样的风格. 命令式编程一般就是说清楚具体要怎么样得到一个结果:先这样做,再这样做,然后再这样,如果这样,就这样做 - 声明式编程就是声明(说明)一下你想得到的结果是什
-
javascript function(函数类型)使用与注意事项小结
本文实例讲述了javascript function(函数类型)使用与注意事项.分享给大家供大家参考,具体如下: 在ECMAScript中,Function(函数)类型实际上是对象.每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针. 学习要点: 1.函数的声明方式 2.作为值的函数 3.函数的内部属性 4.函数属性和方法 一.函数的声明方式 1.普通的函数声明 function box(num1, num2
-
JavaScript函数式编程(Functional Programming)纯函数用法分析
本文实例讲述了JavaScript函数式编程(Functional Programming)纯函数用法.分享给大家供大家参考,具体如下: 函数式编程鼓励我们多创建纯函数(pure functions),纯函数只依赖你交给它的东西,不使用任何函数以外的东西,也不会影响到函数以外的东西.跟纯函数对应的就是不纯函数(impure functions),也就是不纯函数可能会使用函数以外的东西,比如使用了一个全局变量.也可能会影响到函数以外的东西,比如改变了一个全局变量的值. 多使用纯属函数是因为它更可靠
-
浅谈js中function的参数默认值
func(string1,url,flag,icon),然后在另一个asp中调用它func(a,b),那flag和icon的值是什么,怎么定义默认值?谢谢! --默认值应该是 undefined 在函数内预设数可以用 arguments[i] i就是你参数的位置 第一个为0 所以要设定 flag 的默认值 则可以这么写 function func(string1,url,flag,icon){ if(!arguments[2]) flag = "123"; if(!arguments[
-
js中Function引用类型常见有用的方法和属性详解
Function类型 函数由于是Function类型的一个实例,所以函数名就是一个指向函数对象的指针,不会与某个函数死死的连接在一起,这也导致了js中没有真正的重载,但好处是,函数对象可以作为另一个函数的参数或是返回值; 访问一个函数对象的指针而不是执行函数本身不能加括号 var func = new Function("x", "y", "return x + y");// 构造函数来实例化一个Function类型, 但不推荐使用 functi
-
js中使用使用原型(prototype)定义方法的好处详解
经常在前端面试或是和其他同行沟通是,在谈到构造在JS定义构造函数的方法是最好使用原型的方式:将方法定义到构造方法的prototype上,这样的好处是,通过该构造函数生成的实例所拥有的方法都是指向一个函数的索引,这样可以节省内存. 当然,这种说法没有任何问题,只是在实现上,并非只有使用prototype的方式才能达到这样的效果,我们可以将方法以函数的形式定义在构造函数之外,然后在构造函数中通过this.method = method的方式,这样生成的实例的方法也都通过索引指向一个函数,具体如下:
-
Angular.JS中的指令引用template与指令当做属性详解
一.引用template 对于指令,可以把它简单的理解成在特定DOM元素上运行的函数,指令可以扩展这个元素的功能. 指令要生效,那么html头里面要 <html lang="en" ng-app="app"> 制定ng-app的值和定义指令的module名字一致: angular.module('app',[]) 指令的完整参数: angular.module('myApp', []) .directive('myDirective', function
-
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
排序算法的介绍 排序也称排序算法 (Sort Algorithm),排序是将 一组数据 , 依指定的顺序 进行 排列的过程 . 排序的分类 1) 内部排序 : 指将需要处理的所有数据都加载 到 内部存储器(内存) 中进行排序. 2) 外部排序法: 数据量过大,无法全部加载到内 存中,需要借助 外部存储(文件等) 进行 排序. 常见的排序算法分类 算法的时间复杂度 度量一个程序(算法)执行时间的两种方法 1.事后统计的方法 这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,
-
JS中队列和双端队列实现及应用详解
队列 队列 双端队列数据结构 应用 用击鼓传花游戏模拟循环队列 用双端对列检查一个词是否构成回文 生成 1 到 n 的二进制数 队列和双端队列 队列遵循先进后出(FIFO, 也称为先来先服务) 原则的. 日常有很多这样场景: 排队购票.银行排队等. 由对列的特性,银行排队为例, 队列应该包含如下基本操作: 加入队列(取号) enqueue 从队列中移除(办理业务离开) dequeue 当前排队号码(呼叫下一个人) peek 当前队列长度(当前排队人数) size 判断队列是不是空 isEmpty
-
Eclipse中改变默认的workspace的方法及说明详解
eclipse中改变默然的workspace的方法可以有以下几种: 1.在创建project的时候,手动选择使用新的workspace,如创建一个web project,在向导中的Location选项,取消使用"Use default location",同时在下面选择新的workspace. 2.在file菜单中选择switch workspace项,即可选择一个新的workspace 3.在eclipse安装目录下configuration/.settings目录下的 org.ec
-
JS中多步骤多分步的StepJump组件实例详解
最近的工作在做一个多步骤多分步的表单页面,这个多步骤多分步的意思是说这个页面的业务是分多个步骤完成的,每个步骤可能又分多个小步骤来处理,大步骤之间,以及小步骤之间都是一种顺序发生的业务关系.起初以为这种功能很好做,就跟tab页的实现原理差不多,真做下来才发现,这里面的相关逻辑还是挺多的(有可能是我没想到更好地办法~),尤其是当这个功能跟表单,还有业务数据的状态结合起来的时候.我把这个功能相关的一些逻辑抽象成了一个组件StepJump,这个组件能够实现纯静态的分步切换和跳转,以及跟业务相结合的复杂
-
JS中的算法与数据结构之列表(List)实例详解
本文实例讲述了JS中的算法与数据结构之列表(List).分享给大家供大家参考,具体如下: 前言 前端很少有机会接触到算法,大多都交互性的操作,所以不少前端工程师会抱着这么一种想法:我是做前端的,为什么要学数据结构与算法?没有数据结构与算法,我一样很好的完成工作.实际上,算法是一个宽泛的概念,我们平时写的任何代码都可以成为算法,它是对一个问题的解决方案的准确而完整的描述,是解决一系列问题的清晰指令,它代表着用系统的方法描述解决问题的策略机制.随着现在互联网的飞速发展,前端工程师已不是靠几个选择器操
-
JS中的算法与数据结构之字典(Dictionary)实例详解
本文实例讲述了JS中的算法与数据结构之字典(Dictionary).分享给大家供大家参考,具体如下: 字典(Dictionary) 字典(Dictionary)是一种以 键-值对 形式存储数据的数据结构 ,就如同我们平时查看通讯录一样,要找一个电话,首先先找到该号码的机主名字,名字找到了,紧接着电话号码也就有了.这里的键就是你用来查找的东西,本例中指代的就是名字,值就是查找得到的结果,也就是对应的电话号码. 其实,JavaScript 中的 Object 类就是以字典的形式设计的,下面我们将会借
-
JS中的算法与数据结构之集合(Set)实例详解
本文实例讲述了JS中的算法与数据结构之集合(Set).分享给大家供大家参考,具体如下: 集合(Set) 同数学中所学的一样,集合(Set)是由一组无序但彼此之间又有一定关系性的成员构成,每个成员在集合中只能出现一次,不同于我们之前说的字典,链表之类的,它是一种包含了不同元素的数据结构(集合中的元素称为成员),从其定义中我们可以看出它具有两个很重要的特征:首先,集合中的成员是无序的,其次,集合中的成员是不相同的,即集合中不存在相同的成员. 实际上,很多编程语言中,集合并不是一种数据类型,但是如果你
随机推荐
- 相对路径与绝对路径的区别
- DB2 自动递增字段实现方法
- Photoshop 滤镜制作彩色拉丝效果 图文教程
- java实用验证码的实现代码
- java 中Buffer源码的分析
- 浅谈php+phpStorm+xdebug配置方法
- C# 重写ComboBox实现下拉任意组件的方法
- c++实现跳跃表(Skip List)的方法示例
- js操作iframe的一些方法介绍
- Linux中openssl/opensslv.h找不到问题的解决方法
- jquery拖动改变div大小
- JavaScript中的逻辑判断符&&、||与!介绍
- javasciprt下jquery函数$.post执行无响应的解决方法
- Windows XP操作系统的六大使用禁忌
- Android编程实现任务管理器的方法
- C++双向循环列表用法实例
- Android安卓中循环录像并检测内存卡容量
- webpack构建换肤功能的思路详解
- 深入理解java中的null“类型”
- SpringBoot Application事件监听的实现方案