展开

关键词

JavaScript中call,apply,bind的使用及

在JavaScript里,call(),apply(),bind()都是Function内置的三个, 它们的作用都是显示的绑定this的指向,三个的第一个参数都是this指向的对象,也就是函数在运行时执行的上下文 当我们定义一个新的对象,需要使用其他对象的的时候,我们不需要重新开发重复的逻辑,借助apply,apply,bind三个可以实现对这些的的调用。 bind()创建一个新的函数,在bind()被调用时,这个新函数的this被bind的第一个参数指定,其余的参数将作为新函数的参数供调用时使用,第一个thisArg在setTimeout中创建一个函数时传递的始值都会转化成 特点: apply,call,bind三个第一个参数都是函数在调用时this指向的对象,也就是运行时的上下文(this显示绑定的) apply,call第一个参数为空,null,undefined 当我们调用cacheName时this绑定的是window对象,所以this.name获取的是global 我们需要借助bind,在函数调用的时候,绑定this的执行到cacheFun对象上:

40920

彻底解了call(),apply()bind()

如果包含this的函数是一个对象的,this指向的就是这个对象。 这样写是有问题的 ,如果我们的变量名修改了,我们必须同时修改中的变量名。幸运的是,JavaScript给我们提供了解决这个问题的。 JavaScript给我们提供了 3 中 函数 来改变this的指向。 2.call() 这个的第一个参数表示this指向的对象,后面的所有参数都是函数的参数。 這個和call的作用都是相同的,只不过在传递参数时候,call可以传递多个参数,而apply只能传递一个,并且要求是一个数组。 () bind()第一个参数是我们希望函数中this指向的对象,后面的参数是我们希望给函数的参数绑定的值。

34320
  • 广告
    关闭

    腾讯云+社区系列公开课上线啦!

    Vite学习指南,基于腾讯云Webify部署项目。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS 的 call apply bind

    js的call apply bind 都很常见,目的都是为了改变某个的执行环境(context) call call([thisObj[,arg1[, arg2[,   [,.argN]]]]] 将被传递参数序列。 bind(thisArg [, arg1 [, arg2, …]]); bind 也是改变某个的执行环境,区别也在于第二个参数(也是一个个的参数形式)和“返回值”的特性。    如 func.call(func1,var1,var2,var3) 对应的apply写为:func.apply(func1,[var1,var2,var3]) 对应的bind为: func.bind ,1); // 返回一个新的函数 return function(){ // 将相关参数赋给这个bind所在,并将执环境赋给context return

    37630

    浅谈--hashCode

    哈希表也称为散列算,是依据数据特定算产生的结果直接指定到一块地址上,这个结果由hashCode产生。 这样一来,当集合每添加一个新的元素的时候,就可以通过hashCode直接定位到该存放的物位置上,而不需要大量的equals板的比较。 上面说到了hashCode,它是Object类中的一个被native修饰的, 那么也就是说,我们每个对象都会继承了这个,我们也就可以重写它了 Object类的hashCode代码: public 所以对于equals和hashCode有如下的要求: 一、hashCode要求 在程序运行期间,只要对象(字段)变化不会影响到equals的决策结果,那么在这个期间,无论调用多少次hashCode 主要因有两个:   ①、31是一个不大不小的质数,是作为 hashCode 乘子的优选质数之一。   ②、31可以被 JVM 优化,31 * i = (i << 5) - i。

    75520

    使用 bind 设置 DNS 服务器的

    DNS 是能够让你通过名称找到自己喜欢的网站而不是在浏览器中输入 IP 地址的因。本指南将向你展示如何配置一个主 DNS 系统以及客户端。 包: $ sudo dnf install bind bind-utils -y bind 包提供了 /etc/named.conf 配置文件,来供你配置 DNS 服务器。 所有粗体(LCTT 译注:本译文中无呈现粗体)内容都特定于你的环境。保存文件并退出。 你还需要配置 SELinux 并为配置文件添加正确的所有权。 (1)当外网DNS崩溃,比如暴风门发生的那种情况,可以使用我们自己的DNS应急 (2)为内网网站提供内线的IP地址解析,或者实现双线解析 (3)当你的ISP限制了二级域名和高级管特性,你需要自己搭建DNS 服务器来满足自己的需要 (4)避免DNS劫持 (5)和别的解决案集成 总结 到此这篇关于使用 bind 设置 DNS 服务器的文章就介绍到这了,更多相关bind dns服务器内容请搜索ZaLou.Cn

    42841

    C++11 std::bind std::function 高级使用

    placeholders::_2, 100); std::cout << "add100(1, 2) = " << add100(1, 2) << std::endl; // 注意:无<em>法</em>使用 第2种<em>方</em>案更佳简洁,而且对传递參数有明白的推断,当參数类型或数量不对的时候,编译器将导致失败。 无<em>法</em>直接调用脚本函数类。 有了好的解决的<em>方</em><em>法</em>。这个我将随后补充。 #include <list> #include <functional> template<typename... 2) Foo::bar(4, 2) lambda::Foo::bar(4, 2) 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115478.html<em>原</em>文链接

    12720

    降维(一):PCA

    很多同学在学线性代数时对矩阵相乘的感到奇怪,但是如果明白了矩阵相乘的物意义,其合性就一目了然了。 算及实例 为了巩固上面的论,我们在这一节给出一个具体的PCA实例。 PCA算 总结一下PCA的算步骤: 设有m条n维数据。 进一步讨论 根据上面对PCA的数学的解释,我们可以了解到一些PCA的能力和限制。 希望这篇文章能帮助朋友们了解PCA的数学论基础和实现,借此了解PCA的适用场景和限制,从而更好的使用这个算。 GBDT算(详细版) 20. 基于SURF算相似图像相对位置的寻找 21. 降维(一):PCA 免责声明:本文系网络转载。版权归作者所有。如涉及版权,请联系删除!

    79690

    jmap使用

    -J<flag> to pass <flag> directly to the runtime system 1. jmap -heap 查看java堆的信息以及垃圾回收算等 3. jmap -clstas 打印class loader的统计信息 4. jmap -finalizerinfo 打印在等待执行finalize的对象 5. jmap -dump:<dump-options 与jvm通信式attach机制 attach 就是jvm提供一种jvm进程间通信的能力,能让一个进程传命令给另外一个进程,并让它执行内部的一些操作: VirtualMachine.attach: 位于 SA工具一般使用ptrace来进行attach和detach。 SA attach

    5.1K30

    面试:Object

    Object 1. clone clone 的用是对象的浅拷贝和深拷贝,clone是浅拷贝是对基本类型的值传递,对引用类型进行引用类型般的拷贝。 实现深拷贝的有:1. 重写clone,对其内部的引用类型再进行clone. 2.通过序列化实现深拷贝,将拷贝的对象写入内存的字节流中,然后在读出转换为对象。 不是默认序列化很重要的一个因就是为了安全,java的类安全机制是做的很好的. 如果 equals 判断两个对象相等,hashcode 也一定相等,hashcode 相等,equals 并不一定会相等,先用hashcode判断, 可以加快判断的速度。 如果采用if判断的话,wait线程唤醒会直接处接下来的业务,但是可能出现另一种情况,条件语句已经不满足业务处的条件了,所以需要再次进行判断。

    16320

    DevOps:与实践

    软件开发中的精益则 1 )消除浪费。浪费是不会增加产品价值的东西,这里的价值必须是由客户确定的。 在精益思维中,浪费的概念有一个很大的跨越(与日常浪费概念相比)。 想的是找出客户想要的 东西,然后制作或开发它,并且几乎立即交付客户想要的东西。 2 )增强学习。软件开发是个持续学习的过程,最佳的改善软件开发环境的做就是 增强学习。 三种敏捷 scrum xp kanban Sc 「um : 着重于项目管,特别适于难以提前进行计划的项目。 Scrum 以经验过程 控制论为依据,采用迭代、增量的来提高产品开发的可预见性并控制风险。Scrum 框架包括一组Scrum 团队和与其相关的事物: 时间盒、工件和规则。 ITIL 是一套公开的、基于业界最佳实践制定的、用于规范IT 服务管的流程和论。 它以流程为导向,以客户为中心,目的是确保IT 能更好地服务于业务部门,从而让企业 的IT 投资回报最大化。

    60110

    Python super()详解

    构造类似于类似 init() 这种初始化,来初始化新创建对象的状态,在一个对象创建后会立即调用,比如像实例化一个类: f = FooBar() f.init()#手动初始化 使用构造就能让它简化成如下形式 :对象创建后自动调用魔__init__(),对对象进行初始化操作 f = FooBar() 在明白了构造之后,来点进阶的问题,那就是父类的构造中的初始值无继承的问题。 __init__(self) # self.sound = 'Squawk' def sing(self): print self.song() :在调用了一个实例的时 ,该的self参数会自动绑定到实例上(称为绑定);如果直接调用类的(比如Bird. __init__() self.sound = 'Squawk' def sing(self): print self.song() :它会查找所有的超类,以及超类的超类,

    58610

    jQuery型上的属性、

    (push,sort,splice)以push为例: 通过[].push找到数组的push 但是对象的push由对象调用,那么this就指向了对象(jQuery) 所以也就相当于[].push.apply (this)将元素添加到对象身上 jQuery型上的 toArray 把实例转换为数组返回 toArray: function () { return [].slice.call(this ,一个类,一个对象。 当实现类时,只需要让对象调用类即可实现。 类 kjQuery.extend({ each: function (obj, fn) { // 1. each的区别 each静态默认的返回值就是, 遍历谁就返回谁; map静态默认的返回值是一个空数组 each静态不支持在回调函数中对遍历的数组进行处;map静态可以在回调函数中通过

    18420

    jquery的ready实现

    应用jquery时 ready是一个非常常用的,我们常常会写 $(document).ready(function) 或 $(function) ready的作用 window.onload 那么就分为两种情况 (1)标准浏览器 标准浏览器非常简单,有 DOMContentLoaded 事件,当所有DOM解析完以后会触发这个事件 (2)非标准浏览器 非标准浏览器麻烦一些,jquery用两个式来保证 document.readyState=complete 的时候,可视为 DOM 树已经载入 不过这个事件不太可靠,比如当页面中存在图片的时候,可能反而在 onload 事件之后才能触发,所以不能完全指望此 2)doScroll检测 IE浏览器文档中说明,当页面 DOM 未加载完成时,调用 doScroll 时,会产生异常 那么我们反过来用,如果不异常,那么就是页面DOM加载完毕了,可以不断地通过能否执行

    61870

    iOS UITableView代详解

    iOS UITableView的代详解 一、补充 在上一篇博客中,http://my.oschina.net/u/2340880/blog/404605,我将IOS中tableView(表视图) 的一些常用总结了一下,这篇将tableView的代作了总结,对上一篇博客进行了补充。 二、UITableViewDataSourc(数据源代) 1、必须实现的回调 返回每个分区的行数 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection willDisplayFooterView:(UIView *)view forSection:(NSInteger)section; 和上面的对应,这三个分别是cell,头视图,尾视图已经显示时调用的 IOS8中的新,用于自定义创建tableView被编辑时右边的按钮,按钮类型为UITableViewRowAction。

    57940

    HashMap中put()实现

    突然想解剖HashMap实现,Map链表的作者源码如何实现?也可以丰富一下自己的编程思想,也想让读者看见如何观看别人源码的思路和。所以心血来潮的我,就来解析HashMap底层! 这样子自己的开发也会很多思路和。希望国内软件开发越来越好。 : Cloneable类: 一个类实现Cloneable接口,以指示Object.clone(),该对于该类的实例进行现场复制是合的。 按照惯例,实现此接口的类应使用公共覆盖Object.clone (受保护)。 有关覆盖此的详细信息,请参阅Object.clone() 。 注意,此接口不包含clone。 在序列化和反序列化过程中需要特殊处的类必须采用精确签名的特殊

    12730

    DNS和CentOS7上bind域名服务器配置详解

    本文大纲: 论部分: 1、什么是DNS 2、DNS层次介绍及基础内容 3、DNS的工作及过程 域名服务器配置实战:    4、主域名服务器配置     5、辅域名服务器配置     6、缓存域名服务器配置 DNS就是这样的一位“翻译官”,它的基本工作可用下图来表示。 image.png 2、DNS简介 域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机名和域名。 一些常见的DNS域名称如下图: image.png 3、DNS的工作及过程 当我们打开浏览器输入某个网站,我们是如何通过网络找到主机的呢,下来我来说说域名解析的具体过程,看下图: wKioL1gqxaSAeBUwAAjdXRskaSk352 -y bind-utils #这个非必要,需要dig命令,需要安装 程序包说明: bind-libs:被bindbind-utils包中的程序共同用到的库文件; bind-utils:bind客户端程序集 但是作为运维人员,熟悉DNS的工作是非常必要的,通过这些配置,我相信你已经真正的熟悉了DNS。 本来还想配置子域名服务器的,后来觉得没必要了。具体的逻辑图如下,供大家参考。

    45240

    深入解join的实现

    都是很浅的说了一下,要深入解还是得看源码: public final synchronized void josin (long millis) throws InterruptedException 举个例子,join是在main里被调用了。 然后main就持有了 join 的 这个锁。 然后join 里面调用了 wait。 这个过程的目的是让持有这个同步锁的线程进入等待。 答案就是main,因为main调用了join。 main就持有 synchronized 标记的这个锁,谁持有这个锁谁就等待。 wait()只会让持有锁的线程进入等待,而启动线程的 start() 并没有持有锁,所以 strat还是会执行,而join中的wait 使main 等待了。 所以main就没有获取到CPU资源, 所以main中的 thread2 就没有办获取CPU资源。 然后join执行完之后,不用想,JVM底层肯定执行了 notify的操作。

    55090

    深入解join的实现

    都是很浅的说了一下,要深入解还是得看源码: public final synchronized void josin (long millis) throws InterruptedException 举个例子,join是在main里被调用了。 然后main就持有了 join 的 这个锁。 然后join 里面调用了 wait。 这个过程的目的是让持有这个同步锁的线程进入等待。 答案就是main,因为main调用了join。 main就持有 synchronized 标记的这个锁,谁持有这个锁谁就等待。 wait()只会让持有锁的线程进入等待,而启动线程的 start() 并没有持有锁,所以 strat还是会执行,而join中的wait 使main 等待了。 所以main就没有获取到CPU资源, 所以main中的 thread2 就没有办获取CPU资源。 然后join执行完之后,不用想,JVM底层肯定执行了 notify的操作。

    40670

    相关产品

    • 混沌演练平台

      混沌演练平台

      混沌演练平台(CFG)是一款遵循混沌工程实验原理并结合腾讯云内部实践的产品,提供基于真实线上故障的高可用能力演练服务,能够帮助用户的系统提升容错性和可恢复性。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券