文档章节

call()和apply()的学习笔记

L
 LM_Mike
发布于 2017/05/04 17:32
字数 227
阅读 6
收藏 0
function cat(){
    return this;
}
cat.prototype = {
    food:"fish",
    say:function(){
        alert("i love "+this.food);
    }
}

var blackCat = new cat();
blackCat.say();

如果我们有一个对象whiteDog = {food:"bone"},我们不想对它重新定义say方法,那么我们可以通过call或apply用blackCat的say方法:blackCat.say.call(whiteDog); 或者 cat.prototype.say.call(whiteDog);

所以,可以看出call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其他对象的方法来操作。

用的比较多的,通过document.getElementsByTagName选择的dom节点是一种类似array的array。它不能应用Array下的push、pop等方法。我们可以通过:

var domNodes = Array.prototype .slice.call(document.getElementsByTagName("*"))

关于call和apply的详细用法参考http://www.cnblogs.com/itstone/archive/2012/07/23/call.html

© 著作权归作者所有

共有 人打赏支持
L
粉丝 1
博文 263
码字总数 40947
作品 0
深圳
Scala 学习笔记 模式匹配

1. 模式匹配简介 模式匹配是 Scala 的重要特性之一,前面两篇笔记Scala学习笔记(六) Scala的偏函数和偏应用函数、Scala学习笔记(七) Sealed Class 和 Enumeration都是为了这一篇而铺垫准备的...

Tony沈哲
2017/05/16
0
0
带你走入Kaggle 竞赛top20%的分析方法

Kaggle (Bike Sharing Demand)20% 题目:https://www.kaggle.com/c/bike-sharing-demand Github地址:https://github.com/cqychen/mykaggle/tree/master/Bike%20Sharing%20Demand 强调,特......

frbevrqbn4l
2017/12/19
0
0
xtrabackup学习笔记

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/tarball/percona-xtrabackup-2.4.7-Linux-x86_64.tar.gz yum -y install perl perl-devel libaio liba......

glassboy2009
2017/06/06
0
0
AngularJS 学习笔记---Scope

What are Scopes? Scope is an object that refers to the application model. It is an execution context for expressions. Scopes are arranged in hierarchical structure which mimic t......

恋空御月
2016/05/30
48
0
JDK8学习笔记-Function接口

学习JDK8新特性,必不可少的就是函数式编程,那也就不得不了解Function接口的使用了。 首先看下Function接口的定义 接口定义了两个泛型,在使用的时候需要指定。 该接口中比较重要的就是这个...

十月阳光
2017/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android JNI 开发系列(九)JNI调用Java的静态方法&实例方法

JNI调用Java的静态方法&实例方法 package org.professor.jni.bean;import android.util.Log;/** * Created by peng on 2018/10/11. */ public class Person { /*C/CPP 调用......

蔡小鹏
20分钟前
3
0
Flink 原理与实现:Window 机制

Flink 认为 Batch 是 Streaming 的一个特例,所以 Flink 底层引擎是一个流式引擎,在上面实现了流处理和批处理。而窗口(window)就是从 Streaming 到 Batch 的一个桥梁。Flink 提供了非常完...

xtof
22分钟前
1
0
Fabric.js高级点的教程2--添加表格的方法

有时候我们先在画布上画一个表格类似一下设计软件那种。一方面作为参考线,一方面给人一直专业的赶脚。。。 先贴上一段网上(不是我写的)可以运行的代码 https://codepen.io/rodan8888/pen/e...

xmqywx
22分钟前
1
0
Java中Lambda表达式的使用

Java中Lambda表达式的使用 简介 (译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。本人...

DemonsI
25分钟前
2
0
深入理解Java中停止线程

一.停止线程会带来什么? 对于单线程中,停止单线程就是直接使用关键字return或者break,但是在停止多线程时是让线程在完成任务前去开启另外一条线程,必须放弃当前任务,而这个过程是不可预...

Ala6
35分钟前
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部