技术标签: JavaScript javascript
下面是Function的一些常用的属性和方法,希望可以帮助到一些小伙伴。
**全局的Function对象没有自己的属性和方法。**但是,因为它本身也是函数,所以他会通过原型链从Function.prototype上继承部分属性和方法。
Function.length获取函数的形参的个数
// Function类型的length属性 - 获取函数的参数(形参)的个数
function fn1(){
console.log('this is function1');
}
console.log(fn1.length); // 0 (形参的个数默认为0)
function fn2(a,b,c,d,e){
console.log('this is function2');
}
console.log(fn2.length); // 5 (可以获取形参的个数)
function fn3(){
console.log('this is function3');
}
fn3(1,2,3,4,5); // this is function3
console.log(fn3.length); // 0 (不能获取实参的个数)
Function的apply)方法用于调用一个函数,并且接收指定的this值,以及一个数组作为参数。其语法结构如下:
func.apply(thisArg, [argsArray])
Function提供的apply方法可以把之前普通调用函数的实参换成apply()里面的实参
var numbers =[5,6,2,3,7];
Ⅱ/通过apply()方法获取数组中最大值和最小值var max = Math.max.apply(null, numbers);
var min = Math.min.apply(null, numbers);
实例:
// 定义一个函数
function fn(a,b){
console.log('this is ' + a + b);
}
// 调用函数 - 函数的语法内容
fn('function','hello'); // this is functionhello
/*
apply(thisArg,args)方法 - 调用函数
* 使用的对象调用方法的语法结构 -> 将函数作为对象使用
* 参数
* thisArg - 指定this的值,表示当前调用函数的对象
* 如果不使用this值,提供默认值为null或undefined
* args - 数组,用于接受指定函数的实参
* 与函数调用的区别在于接受的this值
*/
fn.apply(null,['function','张无忌']); // this is function张无忌
// null是用来帮this占位的,undefined也可以用来占位,没有区别。null和undefind都表示为空
// Function提供的apply方法可以把之前普通调用函数的实参换成apply()里面的实参
var obj = {
name : '张无忌',
sayMe : fn // 表示当前调用的是fn()函数
}
Function的call()方法用于调用一个函数,并且接收指定的this值作为参数,以及参数列表。其语法结构如下:
func.call(thisArg, arg1, arg2, ...)
apply()与call()非常相似,不同之处在于提供参数的方式。
//通过call()方法获取数组中最大值和最小值
var max = Math.max.call(null, 5,6,2,3,7);
var min = Math.min.call(null, 5,6,2,3,7);
实例:
/*
call(thisArg,arg1,arg2,...)方法 - 用于调用函数
* 参数
* thisArg - 用于指定this的值
* arg1, arg2, ... - 用于接收函数的实参
* call()与apply()方法区别 - 在于第二个参数上
*/
function fn(){
console.log('this is function');
}
fn.call(null); // this is function
Function的bind()方法用于创建一个新的函数(称为绑定函数),并且接收指定的this值作为参数,以及参数列表。其语法结构如下:
fun.bind(thisArgl, arg1[, arg2[, ..]l)
实例:
var fn = function(v,w){
console.log("this is " + v + w)
}
/*
bind(thisArg,arg1,argr2, ... )方法 - 用于创建一个新的函数(复制函数)
* 参数
* thisArg - 用于指定this的值
* arg1,arg2, ... - 用于接受 “ 新创建的 ” 函数的实参
* 新创建的函数的调用时,传递的实参无效
* 返回值 - 返回新创建的函数
* 作用 - 实现函数的深复制
*/
fn('mary'); // this is maryundefined
var f = fn.bind(null,'Jenny'); // 参数的默认值 注意:Jenny这个形参传给了新的对象f,没有传给fn() Jennny是f的预设参数(定义是给的参数)
f('ming'); // this is Jennyming “ 新创建的函数的调用时,传递的实参无效 ” ming是f的参数 所以,f有2个参数
fn(); // this is undefinedundefined
var a = function(){
console.log('this is a');
}
// 把a赋值给b
var b = a;
b(); // this is a
// 重新对a进行赋值
a = function(){
console.log('this is new a');
}
b(); // this is a
// 即使a被重新赋值了,b的值也没有改变
文章浏览阅读9.7k次。 坚持把遇到的问题整理出来,供大家参考(企鹅群:263130304),转载注明出处(方便大家找我要源码),对你有帮助请点个赞,如果存在不足之处请留意,不喜勿喷,欢迎大家相互交流学习。——沙果个人小程序作品:1、工具下载:https://download.csdn.net/download/lz_sha/10319209 2、打开谷歌浏览器输入:chrome://ext...
文章浏览阅读1.7k次。前面一篇学习了Before和After这两个注解,这两个注解是作用在每一个@Test标注的方法上,每次运行方法都需要运行一次Before和一次After。这篇来学习一个类似的,就是作用范围变成了Class,叫BeforeClass和AfterClass, 特点就是,每运行一次class文件,只执行一次BeforeClass和AfterClass, 这两个注解标注标注的方法是Java中的静态方法。..._org.junit.before
文章浏览阅读180次。位图BitMap算法public class BitMap { // Java中char类型占16bit,也即是2个字节 private char[] bytes; private int nbits; //nbits 总容量 public BitMap(int nbits) { this.nbits = nbits; this.bytes = new char[nbits/16+1]; } //长度16 k/16 定位某一段 k%16定位段中某一位 pub_数据结构与算法 散列表位图
文章浏览阅读158次。还是图比较清晰,以下我都用别名称呼: PA : 负载均衡服务器/WEB入口服务器/www.mydomain.com P1 : WEB服务器/分身1/192.168.2.3 P2 : WEB服务器/分身2/192.168.2.4 P3 : WEB服务器/分身3/192.168.2.5PS:首先我们学这个的开始之前吧,不懂防火墙的童鞋们,建议你们把PA、P1、P2、P3的防..._panginx
文章浏览阅读865次。我们知道元素可分为块级元素和内联元素,也知道块级元素内既可以嵌套内联元素也可以嵌套块级元素,但是内联元素就只能嵌套内联元素,不可以嵌套块级元素,当然表格下的tr除外,那么如果违反了规定会出现什么样的效果呢?? 代码如下所示<!--内联元素内嵌套块级元素的展示效果--><div> 这是块级元素 <div style="width: 200px..._内联元素可以包含块级元素吗
文章浏览阅读637次。------- android培训、java培训、期待与您交流! ----------最近研究了一个猜字小游戏和大家分享一下:package cn.itcast.game;/* 猜数字小游戏: 1.生成一个1--1000的一个随机数; 2.引导用户开始游戏; 3.接收用户猜的数字; 4.判断:如果比随机数大,提示:高了 如果比随机数_mvc模式猜数字游戏
文章浏览阅读150次。介绍。 许多人问我是否可以从Access中控制外部过程。 通过外部进程,我说的是在Access外部运行脚本。 这将包括BAT,CMD和PowerShell脚本,甚至包括使用Windows的FTP.EXE命令行界面的FTP脚本。 这些脚本接口的功能很难加以限制。 但是,尤其是FTP.EXE,可以控制通过Internet向各种FTP站点发送和接收文件的控制。 大多数网站都是使用此界面更新的。 可..._通过脚本控制进程
文章浏览阅读292次。//布局<?xml version="1.0" encoding="utf-8"?><LinearLayout ="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_wi..._android retrofit+okhttp+rxjava登录
文章浏览阅读2k次,点赞3次,收藏7次。串口的读写操作既然,我们的so已经生成了,那么接下来就是串口的读写操作啦。下面贴出关键类的代码:** * 串口操作类 */public class SerialPortUtil { private String TAG = SerialPortUtil.class.getSimpleName(); private SerialPort mSerialPort; private OutputStream mOutputStream; private InputStr_android dev串口读写
文章浏览阅读611次。修改字体鼠标点击代码区,右键选择Preferences选择好c/c++中的Editor,点击Edit编辑选择适应的字体,字形,字体大小点击确定,再确定就可以了。_kinetis design studio教程csdn
文章浏览阅读336次。项目也做过几个, 使用IBatis就做一个项目, 基本上都是使用Hibernate, 也只是知道几点关于这两个框架的区别, 今天闲着没事干, 从网上找了几篇文章, 做了一个简单的整理。网上关于这两个框架的比较也很多, 只是自己想把别人的东西拿过来整理一下, IBatis和Hibernate的比较。(非原创)Hibernate VS iBATIS简介Hibernate是当前最流行的O_hirbanate对比ibatis
文章浏览阅读735次。csdn的metaweblog的网址 http://write.blog.csdn.NET/xmlrpc/index 其他填写用户名和密码即可 后续准备写一个自己的博客发布客户端_livewrite