谈谈 javascript的 call 和 apply用法】的更多相关文章

定义: ECMAScript规范为所有函数都包含两个方法(这两个方法非继承而来),call和apply,这两个函数都是在特定的作用域中调用函数,能改变函数的作用域,实际上是改变函数体内 this 的值 . 语法: call(thisObj,Object) apply(thisObj,[argArray]) call 和 apply的相同点:thisObj都是一个对象,调用一个方法,通过改变this的指向,以另外一个对象替换当前对象. call 和 apply的区别:call的第二个参数是逐个依次…
javascript学习(2)call&apply&bind&eval用法 在javascript中存在这样几种特别有用的函数,能方便我们实现各种奇技淫巧.其中,call.bind.apply能改变函数运行时的上下文,或者说动态改变函数内部的this指向的作用,这就给我们使用时提供了极大的灵活性.而eval可以将传入的字符串当作JavaScript代码执行.本文,简单的介绍下其中的用法. 1. call 含义: Function.prototype.call() 可知它是Funct…
一.前言    不知道大家还记不记得前几篇的文章:<面试官:能解释一下javascript中的this吗> 那今天这篇文章虽然是介绍javascript中bind.apply和call函数,但是多少也和this有点关联. 假如在前面那场面试末尾,面试官不依不饶继续问你javascript中的this,那看完本篇文章后一定还会有收获. (本篇文章不会站在this的角度去回答问题,而是重于解释bind.apply和call这三个函数的用法和使用场景) 二.正戏开始 面试官:能解释一下javascr…
1. apply calll 在JavaScript中 call 和 apply 都是为了改变某个函数运行时上下文而存在的, 换句话说就是为了改变函数内部的this的指向. 这里我们有一个新的对象 banana对象 但是没有say方法 我们可以通过call 或者apply用apple的say方法. 直接传入banana进去 使得this指向banana对象. apply和 call 本质上完全一样 只是 接收的参数不一样 call把参数(参数个数是确定的)逐个放进去.而apply的参数(参数是不…
详解 javascript中offsetleft属性的用法 转载  2015-11-11   投稿:mrr    我要评论 本章节通过代码实例介绍一下offsetleft属性的用法,需要的朋友可以做一下参考.   任何支持style特性的HTML元素在JavaScript中都有一个对应的style属性.这个style对象是CSSStyleDeclaration的实例,包含着通过HTML的style特性指定的所有样式信息,但不包含与外部样式表或嵌入样式表经层叠而来的样式(关键就在这句话!也就是说只…
谈谈javascript中的prototype与继承 今天想谈谈javascript中的prototype. 通常来说,javascript中的对象就是一个指向prototype的指针和一个自身的属性列表.javascript创建对象时采用了写时复制的理念. 只有构造器才具有prototype属性,原型链继承就是创建一个新的指针,指向构造器的prototype属性. prototype属性之所以特别,是因为javascript时读取属性时的遍历机制决定的.本质上它就是一个普通的指针.   构造器…
TSQL中的join语句共有五种类型,left join,right join,inner join,full join,cross join 为了描述方便,解释一个名词"保留表",在进行连接查询时,保留表中的数据行全部显示出来. 首先创建测试使用的代码 create table dbo.ta ( a int, b int ) create table dbo.tb ( ca int, cb int ) go insert into dbo.ta ,),(,) insert into…
今天给自己巩固一下js的继承知识,基础不好,有不对的地方,请尽量拍砖,越重越好. js继承方法最主要的是2种,一种是通过原型的方式,一种是通过借用call&apply的构造函数方式. 1.原型(prototype): function Body(name,age){// 创建一个Body类 this.name = name;// 赋予基础属性name.age this.age = age; } Body.prototype.sayName =function() {// 给原型定义一个sayNa…
在js中call和apply它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数方式有所区别,下面我来给大家介绍一下call和apply用法: 在web前端开发过程中,我们经常需要改变this指向,通常我们想到的就是用call方法: 说明:a.call(b,arg1,arg2..)就是a对象的方法应用到b对象上 a.apply(b,[arg1,arg2,....])也是a对象的方法应用到b对象上,只不过是第二个参数不一样而已: 例如: function add(a,b){alert(…
转:http://www.cnblogs.com/wupeng/p/3477879.html Javascript call与apply记录 [注]:记录自己对javascript中call与apply的见解 总会有些东西会被人拿出来重复的写来写去,为何? 只是因为自己感觉不够了解,所谓好记性不如烂笔头,并且在写的同时也会或多或少的收获到一些额外的知识,这才是重点(但是必须用心去写) call 概念 [概念]:调用一个对象的一个方法,以另一个对象替换当前对象 或者(劫持另外一个对象的方法,继承另…
这篇文章主要介绍了Javascript的&&和||的另类用法,需要的朋友可以参考下 最近也没什么心思写文章了,感觉总有忙不完的事情,呵. 不过这些天又开始研究起 Titanium 来,发现其官方出品的MVC框架(Alloy)还是挺不错的,刚开始苦于没有好的代码来学习,文档又少,所以一直没去详细研究,后来发现原来官方的 CodeStrong 就是一套非常不错的学习代码,只要看通了其整套代码,相信对Alloy的使用也基本会了- 在看其源码的同时,发现很多地方使用了诸如以下的用法: 1 $.cl…
Function.prototype.apply()|Function.prototype.call() apply()方法可以在使用一个指定的 this 值和一个参数数组(或类数组对象)的前提下调用某个函数或方法.call()方法类似于apply(),不同之处仅仅是call()接受的参数是参数列表. 简而言之: apply()一个this,多个参数 call()   一个this,一个参数 语法 fun.apply(thisArg[, argsArray])|fun.call(thisArg[…
1. filter 功能: filter的功能是过滤掉序列中不符合函数条件的元素,当序列中要删减的元素可以用某些函数描述时,就应该想起filter函数. 调用: filter(function,sequence),function可以是匿名函数或者自定义函数,它会对后面的sequence序列的每个元素判定是否符合函数条件,返回TRUE或者FALSE,从而只留下TRUE的元素:sequence可以是列表.元组或者字符串 x = [1,2,3,4,5] print(list(filter(lambd…
一.call和apply定义. 1.Call 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 参数 thisObj 可选项.将被用作当前对象的对象. arg1, arg2, , argN 可选项.将被传递方法参数序列. 说明  call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象.  如果没有提供 thisObj 参数,那么 Global 对象被用作thisObj.…
Javascript的&&和||的另类用法. 又开始研究起 Titanium 来,发现其官方出品的MVC框架(Alloy)还是挺不错的,刚开始苦于没有好的代码来学习,文档又少,所以一直没去详细研究,后来发现原来官方的 CodeStrong 就是一套非常不错的学习代码,只要看通了其整套代码,相信对Alloy的使用也基本会了-在看其源码的同时,发现很多地方使用了诸如以下的用法:1$.clouds && ($.index.add($.clouds));开始不是很理解,毕竟平时这样…
JavaScript中call.apply个人理解 一句话即通俗的说:call.apply 是为了改变this的状态而存在的 }; } function personInfo(name,age){ this.name = name; this.age = age; } personInfo.prototype = { showInfo:function(){ console.log('我是'+this.name+','+'今年'+this.age+'岁.'); } } ); p.showInfo…
谈谈javaScript  (杰我学习) 一. 什么是JavaScript       人们通常所说的JavaScript,其正式名称为ECMAScript.这个标准由ECMA组织发展和维护.ECMA-262是正式的JavaScript标准.这个标准基于网景(Netscape)公司提出的JavaScript语言和微软提出的JScript语言.JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言.使用这种语言的目的是:与Web客户交互作用…
原文地址:https://www.jb51.net/article/127776.htm 本文实例讲述了javascript自定义事件功能与用法.分享给大家供大家参考,具体如下: 概述 自定义事件很难派上用场? 为什么自定义事件很难派上用场,因为以前js不是模块化开发,也很少协作.因为事件本质是一种通信方式,是一种消息,只有存在多个对象,多个模块的情况下,才有可能需要用到事件进行通信.而现在有了模块化之后,已经可以使用自定义事件进行各模块间协作了. 哪里用得到自定义事件? 事件本质是一种消息,事…
转自: http://www.h5cn.com/js/jishu/2016/0128/17884.html 在之前的JavaScript学习中,this,call,apply总是让我感到迷惑,但是他们的运用又非常的广泛.遂专门花了一天,来弄懂JavaScript的this,call,apply.中途参考的书籍也很多,以<JavaScript设计模式与开发实践>为主,<JavaScript高级程序设计>.<你不知道的JavaScript>为辅.这三本书对我理解this,c…
下面有关JavaScript中 call和apply的描述,错误的是? call与apply都属于Function.prototype的一个方法,所以每个function实例都有call.apply属性 两者传递的参数不同,call函数第一个参数都是要传入给当前对象的对象,apply不是 apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入 call传入的则是直接的参数列表.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 正确答案:…
Learning JavaScript with MDN (call, apply, bind) call, apply, bind Object.prototype.toString() 检测 js 数据类型 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString Object.prototype.toString({}) // "[object Objec…
前言 call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向.call 和 apply二者的作用完全一样,只是接受参数的方式不太一样. 方法定义applyFunction.apply(obj,args)方法能接收两个参数: obj:这个对象将代替Function类里this对象 args:这个是数组或类数组,apply方法把这个集合中的元素作为参数传递给被调用的函数. call call方法与apply方法的第…
JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别.其实就是更改对象的内部指针,即改变对象的this指向的内容.这在面向对象的js编程过程中有时是很有用的.call函数和apply方法的第一个参数都是要传入给当前对象的对象,及函数内部的this.后面的参数都是传递给当前对象的参数.如下: <script> var func=new function(){this.a="func"} var myfunc=function(x){ var…
1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj. apply方法: 语法:apply([thisObj[,argArray]])…
一.bind的用法 第一个:obj.showInfo('arg','arg_18');中传的2个参数通过showInfo方法改变的是obj下中的name和age 第二个:obj.showInfo.bind(this)('bind','bind_18');中bind要传的name和age是通过一个一个传的形式,然后通过showInfo方法改变的是window下的name和age 注:bind 返回的是一个新的函数,你必须调用它才会被执行 二.apply的用法 第一个:obj.showInfo('a…
先上代码: apply()方法示例 /*定义一个人类*/ function Person(name,age) { this.name=name; this.age=age; } /*定义一个学生类*/ function Student(name,age,grade) { Person.apply(this,arguments); //arguments即["zhangsan", 21, "一年级"] this.grade=grade; } //创建一个学生类的实例…
其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例1 obj.objAge;  //17 obj.myFun()  //小张年龄undefined 例2 shows()  //盲僧 比较一下这两者this 的差别,第一个this 指向obj,第二个全局声明的shows()函数   this 是window : 1,call().apply().bind() 都是用来重定义 this 这个对象的! 如: obj.myFun.call(db): //德玛年龄99  …
其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例1 obj.objAge;  //17 obj.myFun()  //小张年龄undefined 例2 shows()  //盲僧 比较一下这两者this 的差别,第一个this 指向obj,第二个全局声明的shows()函数   this 是window : 1,call().apply().bind() 都是用来重定义 this 这个对象的! 如: obj.myFun.call(db): //德玛年龄99  …
"use strict"; ; var obj = { name:'小李', age:, getInfo(from, to) { console.log(arguments) console.log(this.name + '的年龄是' + this.age + '来自:' + from + ' 去:' + to); } }; }; obj.getInfo.call(db,'北京','南京'); obj.getInfo.apply(db,['内蒙古','新疆','别墅']); obj.…
function add(c,d){ return this.a + this.b + c + d; } var s = {a:"鸡", b:"你"}; console.log(add.call(s,"太","美")); // 鸡你太美 console.log(add.apply(s,["太","美"])); // 鸡你太美 两者区别: call(this,1,2,3,4):一个是函数运…