不用不知道 apply()与call()的强大】的更多相关文章

在看关于javascript继承的时候 好多地方都用到了apply()和call() 之前在简单编程的时候根本没有遇到过 查阅资料后才发现这两个方法是如此的好用. 下面从几方面来看一下这两个方法: 1.定义 2.从例子中详解 3.在实际应用中让人意想不到的拓展 一.首先从定义入手: apply()和call()都是定义在Function对象原型上的方法(Function.prototype.apply = function(){}&Function.prototype.call = functi…
一.前言 ECMAScript中的函数是对象,因此函数也有属性和方法.每个函数都包含两个属性:length和prototype.每个函数也包含两个非继承来的方法:apply()和call(),还有一些继承而来的方法,比如valueOf()等. 二.函数属性:length.prototype 2.1.length 函数希望接收的命名参数的个数,如: function sum(a,b){ return a+b; } sum.length ; //2 function add(){ } add.len…
每个函数都包含两个非继承而来的方法:apply()和call().这两个方法的用途都是在特定的作用域中调用函数,特定的作用域为this参数指定的对象. apply()和call()真正强大的地方是能够扩充函数赖以运行的作用域.下面来看一个例子: window.color = "red"; var o = {color: "blue"}; function sayColor() { alert(this.color); } sayColor(); // red say…
上两期我们讨论了Monad.我们说Monad是个最有概括性(抽象性)的泛函数据类型,它可以覆盖绝大多数数据类型.任何数据类型只要能实现flatMap+unit这组Monad最基本组件函数就可以变成Monad实例,就可以使用Monad组件库像for-comprehension这样特殊的.Monad具备的泛函式数据结构内部的按序计算运行流程.针对不同的数据类型,flatMap+unit组件实现方式会有所不同,这是因为flatMap+unit代表着承载数据类型特别的计算行为.之前我们尝试了List,O…
81.函数内部属性:arguments.arguments.callee.this. window.color = "red"; var o={color:"blue"}; function sayColor() { alert(this.color); } sayColor(); // red o.sayColor = sayColor; o.sayColor(); // blue 函数的名字仅仅是一个包含指针的变量而已.因此,即使是在不同的环境中执行,全局的sa…
笔者寄语:本文中大多内容来自<数据挖掘之道>,本文为读书笔记.在刚刚接触机器学习的时候,觉得在监督学习之后,做一个混淆矩阵就已经足够,但是完整的机器学习解决方案并不会如此草率.需要完整的评价模型的方式. 常见的应用在监督学习算法中的是计算平均绝对误差(MAE).平均平方差(MSE).标准平均方差(NMSE)和均值等,这些指标计算简单.容易理解:而稍微复杂的情况下,更多地考虑的是一些高大上的指标,信息熵.复杂度和基尼值等等. 本篇可以用于情感挖掘中的监督式算法的模型评估,可以与博客对着看:R语言…
// js 6种数据类型:字符串.数值.布尔值.undefined.null.object // 三种非数字的数字类型:Infinity -Infinity NaN var str = "Hello,world" //string var i = 10 //number var f = 2.3 //number var b = true //boolean var leftShift = 1 << 2 // 一些容易忘记的东西 // 1.string 是可以用 < &…
Function类型 ECMAScript中函数是对象,每个函数都是Function类型的实例,也有属性和方法,函数是对象,函数名实际上市一个指向函数对象的指针,不会与某个函数绑定: function sum(num1,num2){ return num1+num2; } 同: var sum=function(num1,num2){ return num1+num2; }; (1)没有重载 若声明了两个同名函数,后面的函数会覆盖前面的函数: (2)函数声明和函数表达式 解析器会率先读取函数声明…
this指向问题绝对可以排js 的top 5最难和最重点的问题,初学者常常搞不清楚this指向哪里,特别是学过java和c#的人,想当年俺也迷糊了好久,直到遇到蝴蝶书,主要是因为js和主流的面向对象语言java,c#都不同(相似的问题还有new 操作符的问题, 关于new 构构器函数的原理,参见这篇文章: http://www.cnblogs.com/windyfancy/p/5167266.html ),this并不指向当前对象,这是理解this的关键所在,this的指向取决于你是采用何种方式…
    eval是一个函数,可以接受一个参数,这个参数可以作为js语句被解释性的执行,利用这个特性,eval和apply结合起来,可以大大简化代码  如下例子 <a class="click" data-click="first">firstClick<a>  //点击后执行函数firstClick <a class="click" data-click="second">secondCli…
前言 其实有些新的特性在SQL Server早就已经出现过,但是若非系统的去学习数据库你会发现在实际项目中别人的SQL其实是比较复杂的,其实利用新的SQL Server语法会更加方便和简洁,从本节开始我们将讲述一些SQL Server中早已出现的新语法,简短的内容,深入的理解,Always to reivew the basics. 初探APPLY运算符 APPLY运算符是一个非常强大的表运算符,但是APPLY不是标准的,相对应的标准叫做LATERAL,但是此标准并未在SQL Server中实现…
一.闭包(Closure) 1.1.闭包相关的问题 请在页面中放10个div,每个div中放入字母a-j,当点击每一个div时显示索引号,如第1个div显示0,第10个显示9:方法:找到所有的div,for循环绑定事件. 示例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>闭包</title> <style type="…
1.call(),apply(),bind()方法 JavaScript 中通过call或者apply用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象.简单的说就是改变函数执行的上下文,这是最基本的用法.两个方法基本区别在于传参不同. call(obj,arg1,arg2,arg3); call第一个参数传对象,可以是null.参数以逗号分开进行传值,参数可以是任何类型. apply(obj,[arg1,arg2,arg3]); appl…
每个函数都是Function类型的实例.函数有三种定义方式和两个内部属性arguments和this. 同时函数也是对象,也有属性和方法.本篇主要其call()和apply()方法 属性 length 表示该函数希望接受的命名参数的个数 prototype 保存引用类型的实例方法.这个大强大功能是实现继承.下篇文章会讲到. 方法 call() 和 apply() 这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值.这便是它的强大的之处:扩充函数赖以运行的作用域.…
首先是apply()一个很强大的功能——能将一个数组默认转化为参数列表!!! 应用: 1.求出一个数组中的最大值 var arr= [1, 3, 3, 6]; var max =Math.max.apply(null,arr); alert(max); // 6 Math.max()方法接受多个参数,但是不接受数组,所以直接Math.max(arr)是无法达到效果的,由apply()将数组转化成参数列表进行操作. 2.合并数组 ①使用concat()方法 var arr1 = [1, 3, 3,…
原文:强大的数据库查询工具Database.NET 9.4.5018.42 强大的数据库查询工具Database.NET 9.4.5018.42 两个工具的下载地址,两个软件都是绿色免安装的,直接双击运行: Database.Net http://files.cnblogs.com/lyhabc/Database9.4.5018.42.rar SQLite Database Browserhttp://files.cnblogs.com/lyhabc/sqlitebrowser_200_b1_w…
名词解释 Chart.js:是基于html5和canvas的强大图表插件,支持多样的图表形式,柱状线性饼环极地雷达等等: canvas:只兼容到IE9 excanvas.js:强大的第三方兼容插件,可以使canvas兼容到IE5 链接 Chart.js中文网 Chart.js中文文档 代码实现 第三方引入 <script src="../js/Chart.js?"></script> <!--[if lte IE 8]> <script src…
1.构造函数: 通常构造函数首字母需要大写,主要是为了区别ECMAScript的其它函数.(高程三 P145) 构造函数与其他函数的唯一区别,就在于调用它们的方式不同.只要通过new来调用,任何函数都是构造函数:而任何函数,如果不通过new来调用,那么它和普通函数也没有任何区别.(P146) 所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量.对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上. (就是一个普通的函数,与其他函数没有任何区别,可…
call与apply call和apply方法可以通过函数名称来调用函数.有两个参数 call()方法与apply()方法的作用相同,他们的区别仅在于接收参数的方式不同. [call] 调用一个对象的一个方法,以另一个对象替换当前对象. call()方法是与经典对象冒充方法最相似的方法.他的第一个参数用作this对象,其他参数都直接传递给函数自身. 对于call而言,第一个参数是上下文对象,第二个参数是不同的函数参数. call是通过参数列表来完成传递, 其他与apply没有区别 [apply]…
众所周知,Unity3D是一个能够实现轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎.在现有的版本中,其强大的游戏制作功能已 经达到让人瞠目结舌的地步.尤其是它在3.0版本里面制作的那款第一人称战争游戏,画质效果丝毫不逊色于当下十分流行的<穿越火线>.<战地之王>等主流 第一人称射击游戏.下图为Demo中的显示效果: 看到如此绚丽的效果,让我马上走进精彩的Unity3D世界吧!首先要下载Unity3D,在官网上就可以完成. Unity3D的官方网站:http://un…
在上一章http://www.cnblogs.com/meiyh/p/6207671.html 我有提到javascript很重要的this关键字,现在我们结合这个关键字使用的下面的两个关键字: call(对象,参数...)   apply(对象,[参数]) 以上代码我们来改成call和apply写法: var a = { num: 4 }; var b = { num: 8 }; a.sum = function (count) { this.num += count; return this…
每个函数都包含两个非继承而来的方法:apply()和call().这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值. apply(): 方法接受两个参数:一个是在其中运行函数的作用域,另一个是参数数组.其中,第二个参数可以是Array的实例,也可以是arguments对象.例如: function sum(num1, num2) { return num1 + num2; } function callSum1(num1, num2) { return sum…
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:apply族功能强大,实用,可以代替很多循环语句,R语言中不要轻易使用循环语句. 函数名 功能 特点 apply 按行.列运算均值.求和.众数等 简单运算 tapply=table apply 在apply之上加入table功能,可以分组汇总 table结合,可以分组汇总 lapply=list apply 都需要数据框格式,可以与l…
1.call(),apply(),bind()方法 JavaScript 中通过call或者apply用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象.简单的说就是改变函数执行的上下文,这是最基本的用法.两个方法基本区别在于传参不同. call(obj,arg1,arg2,arg3); call第一个参数传对象,可以是null.参数以逗号分开进行传值,参数可以是任何类型. apply(obj,[arg1,arg2,arg3]); appl…
1.语法 先来看看JS手册中对call的解释: call 方法 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 参数 thisObj可选项.将被用作当前对象的对象. arg1, arg2, , arg可选项.将被传递方法参数序列. 说明 call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 如果没有提供 thisObj…
每个函数都包含两个非继承而来的方法,apply()和call(),这两方法的用途都是在特定的作用域中调用函数,实际上等于设置函数数体内的this对象的值. apply()和call()第一个参数都一样,运行函数的作用域 apply()第二个参数是数组,call()其余参数直接传给函数. function() sum(num1, num2){ return num1 + num2; } function() callSum1(num1, num2){ return sum.apply(this,…
重写apply, call, bind方法 //原生JavaScript封装apply方法,第四版 Function.prototype.applyFour = function(context) { var context = context || window var args = arguments[1] //获取传入的数组参数 var fn = Symbol() context[fn] = this //假想context对象预先不存在名为fn的属性 if (args == void 0…
每个函数都包含两个非继承而来的方法:apply()和 call(). 这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内 this 对象的值. 一.apply() apply()方法接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组.其中,第二个参数可以是 Array 的实例,也可以是 arguments 对象. function sum(num1, num2){ return num1 + num2; } function callSum1(num1, num2){…
图标 Icon   软件介绍 Description Pixelmator Pro是一个功能强大.美观.易于使用的图像编辑器,专为Mac设计.Pixelmator Pro 借助各种专业级的无损图像编辑工具,Pixelmator Pro可以让您在照片中呈现出最佳效果,创造出漂亮的作品和设计,绘制,绘画,应用令人惊叹的效果,设计漂亮的文字,并编辑图像任何你可以想象的方式.由于其直观易用的设计,Pixelmator Pro非常易于使用 – 无论您是从图像编辑开始,还是经验丰富的专业人士. Pixelm…
call apply bind 区别? 例:定义一个计算器,没绑定bind的为公共计算器,call可以调用,绑定bind的为私人计算器,别人调用不了, //ps:用bind绑定的call强制作借用不好用了, function calc(base,bonus){ console.log( this.ename+'的总工资是'+(base+bonus) ) } var lilei = {ename:'Li Lei'}; var hmm = {ename:"Han Meimei"}; //l…