JS学习:第二周——NO.1回调函数
- 回调函数调用次数,取决于条件;
- 回调函数可以传参;
- 回调函数可以给变this指向,默认是window;
- 回调函数没有返回值,forEach也没有返回值;
1)把this这个实例中的this字符串改成了call的第一个参数;如果this这个实例中,没有this字符串,就不用改了;
2)this这个实例立即执行; this();
}*/
/*function fn(n,m){
console.log(this,(n+m));
}
fn.call(obj,2,3);*/
//1.把call前面的函数中的this改了,参数传了;
//call把fn这个实例中的this字符串,改成了call的第一个参数;
//2.把call前面的函数-实例fn 立即执行;
var obj={};
Array.prototype.myMap=function(callback,context){
context=context||window;
//浏览器判断-性能优化
if('map' in Array.prototype){
return this.map(callback,context);
}
var ary=[];
for(var i=0; i<this.length; i++){
var res=callback.call(context,this[i],i,this);
ary.push(res);
}
return ary;
}
var res=ary.myMap(function(item,index,input){
console.log(this)
return item*100;
},obj)
console.log(res)
var ary=[10,40,60,20];
Array.prototype.myForEach=function(callback,context){
//this->ary;
context=context||window;
if('forEach' in Array.prototype){//标准浏览器
this.forEach();
return;//阻断程序的执行;
}
//IE浏览器兼容处理;
for(var i=0; i<this.length; i++){
callback.call(context,this[i],i,this);
}
};
var res=ary.myForEach(function(item,index,input){
console.log(this===obj)
});
每个对象,都是基类Object的实例;
每个函数,都是Function这个类的实例;
2.关于Object基类 和 Function类之间的关系:
1)Object.prototype 是 Function.prototype的爹;
2)Object.prototype 是 Function这个对象的爹;
3)Object instanceof Function;-》true;
4)Function instanceof Object;-》true
3.函数的三种角色:
1)普通函数:形成私有作用域-形参赋值-欲解释-代码从上到下的执行 内存和内存释放;
2)类:实例,原型,原型链,constructor
3)对象:就跟普通的对象一模一样,都有属性和方法;
4.严格模式和非严格模式下改变this指向的区别:
1)非严格模式下:
1.不传的时候,默认是window
2.传null,默认是window
3.传undefined,默认是window
2)严格模式 'use strict'
1.不传的时候,默认是undefined;
2.传什么,this就是什么;
5.call , apply , bind的功能和区别
1)call和apply用法基本一致,区别就是apply的第二个参数是数组,虽然是数组,但相对于前面函数的传参,也是从左往右一个个的传参的;
2)bind的传参方式和call一致,但是bind属于预处理机制;
预处理机制:先把bind前面函数中的this关键字改了+参数传了,然后返回一个修改好的函数的定义阶段;
等我们需要的时候,手动调用;
JS学习:第二周——NO.1回调函数的更多相关文章
- node.js学习笔记(二)——回调函数
Node.js 异步编程的直接体现就是回调. 那什么是回调呢?回调指的是将一个函数作为参数传递给另一个函数,并且通常在第一个函数完成后被调用.需要指明的是,回调函数不是由该函数的实现方直接调用,而是在 ...
- 【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第二周测验【中英】
[中英][吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第二周测验 第2周测验 - 神经网络基础 神经元节点计算什么? [ ]神经元节点先计算激活函数,再计算线性函数(z = Wx + ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第二周
学习第二周(Java基本程序设计结构) 这一周,着重学习了Java的简单程序设计实现及运行,通过自己操作,发现Java的程序语法大面 ...
- Objective-C学习笔记 利用协议实现回调函数
来源:http://mobile.51cto.com/iphone-278354.htm Objective-C学习笔记 利用协议实现回调函数是本文要介绍的内容,主要是实现一个显示文字为测试的视图,然 ...
- Cocos Creator学习三:生命周期回调函数
1.目的:学习生命周期回调函数以及回调顺序,更有利于我们逻辑的处理把控. 2.生命周期回调函数: 节点:指cc.Node:组件:指cc.Component. ①onLoad:脚本组件绑定的节点所在场景 ...
- Java学习第二周学习笔记
20145307<Java程序设计>第二周学习总结 教材学习内容总结 Java语言中的很多基本语法都和C语言类似,以下Java中的基本语法 标识符 标识符是程序中自定义的一些名称. 由26 ...
- DELPHI语法基础学习笔记-Windows 句柄、回调函数、函数重载等(Delphi中很少需要直接使用句柄,因为句柄藏在窗体、 位图及其他Delphi 对象的内部)
函数重载重载的思想很简单:编译器允许你用同一名字定义多个函数或过程,只要它们所带的参数不同.实际上,编译器是通过检测参数来确定需要调用的例程.下面是从VCL 的数学单元(Math Unit)中摘录的一 ...
- H5学习第二周
怎么说,在各种感觉中h5学习的第二周已经过来了,先总结一下,感觉学习h5是一件让我爱恨交加的事,学会一些新的知识并把它成功运行出来的时候是非常激动和兴奋的,但是有时候搞不懂一个标签或者属性的时候,就有 ...
- JavaScript学习-5——异步同步、回调函数
----------异步同步函数 ----------回调函数 一.异步同步函数 同步:发送一个请求,等待返回,然后再发送下一个请求 异步:发送一个请求,不等待返回,随时可以再发送下一个请求 同步可以 ...
随机推荐
- FastCgi与PHP-fpm关系
1 CGI (1)什么是CGI: CGI(Common Gateway Interface)公共网关接口, 是WWW技术中最重要的技术之一,有着不可替代的重要地位, CGI是外部应用程序(CGI程序 ...
- Linus:C++是一种糟糕的语言
本文内容摘自http://blog.csdn.net/turingbook/article/details/1775488 C++是一种糟糕的(horrible)语言.而且因为有大量不够标准的程序员在 ...
- 学券制(教育券、school voucher)
美国「学券制」是怎样的一种制度?它为什么是共和党的执政政策?它在美国及其它地区有实施吗?效果如何?能否在保证公平的同时,通过市场提高教育质量? 作者:冉筱韬链接:https://www.zhihu.c ...
- jQuery实现动态分割
由jQuery实现上下.左右动态改变左右.上下两个div的大小,需要自己引入jquery1.8.0.min.js包 可用于页面布局. //============================ind ...
- linux 常见命令
redhat 1.获取apt软件列表 sudo apt-cache search all 2.添加用户并创建目录 sudo useradd -m username -s /sbin/bash 3.vs ...
- Gc.Db之循序渐进
距离上次写Gc.Db框架已经有一段时间了,最近默默对框架代码已经做了不少优化和功能,且已经提交至nuget,大家如果想使用此框架,可以通过nuget搜索:Gc.Db进行下载和安装包. 本篇文章主要是介 ...
- python venv下安装mysql出错 解决方法
1.首先使用exe文件安装python-mysql.链接: http://pan.baidu.com/s/1kVqILTX 密码: manj. 2.虚拟环境创建后,我们把已经在公共环境使用exe安装好 ...
- Django进阶(一)
Url进阶 mysit/mysit/urls.py from django.conf.urls import url from django.contrib import admin urlpatte ...
- Docker 学习之命令详解
1. docker version docker version 显示 Docker 版本信息. 2. docker info docker info 显示 Docker 系统信息,包括镜像和容器数. ...
- chose.jquery 多选
<select id="language" data-placeholder="选择类别..." class="chosen-select&qu ...