JS膏集04
JS膏集04
1、apply和call方法
可以改变this的指向,可以用于函数的调用
apply和call方法中如果没有传入参数,或者传入null,那么调用该方法的函数中的this就是window
函数名(thisArgs,数组);
函数名(thisArgs,args);
function f1(x,y){
console(x+y)
}
f1(10,20);//等价于
f1.apply(null,[10,20]);
f1.call(null,10,20);
apply和call都可以让函数或者方法来调用,传入参数和 函数自己调用的写法不一样,但效果是一样的。
window.f1.apply(obj.[10,20]);
apply和call将改变this的指向(obj)
在方法中改变this的指向
Function.prototype即为f(){native code。call和apply在其中存在
2、bind方法
函数名.bind();//将复制一份调用的函数,复制的同时可以传参
.bind(对象,参数1,参数2…)
在复制后再自行传参即可。复制后再自行调用
与apply和call同理,也会改变this指向。
bind的使用:通过对象调用方法,产生随机数
调用方法可以不停地产生随机数
3、函数中的成员介绍
.name:函数的名称,不可修改
.arguments:.length实参的个数
.length:形参的个数
.caller:返回函数的调用者
4、函数作为参数
函数作为参数后若在函数名后带有括号,则意味着是函数的返回值来作为函数的参数
5、
6、函数作为返回值使用
console.log(Object.prototype.toString)
将输出Object的数据类型[object Object]
数组的数据类型,借助call [object Array]
Object.prototype.toString.call(数组名)
7、函数作为参数使用
案例:为3个电影排序
8、作用域,作用域链及预解析
函数预解析将把它的内容一并解析完成
9、闭包
结果均为11
依次为11,12,13
闭包案例产生相同的随机数
//闭包案例实现点赞
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>对自己狠点</title>
<style>
ul {
list-style-type: none;
}
li {
float: left;
margin-left: 10px;
}
img {
width: 200px;
height: 180px;
}
input {
margin-left: 30%;
}
</style>
<script>
//$永远都是24k纯帅的十八岁的杨哥$
</script>
</head>
<body>
<ul>
<li><img src="data:images/ly.jpg" alt=""><br/><input type="button" value="赞(1)"></li>
<li><img src="data:images/lyml.jpg" alt=""><br/><input type="button" value="赞(1)"></li>
<li><img src="data:images/fj.jpg" alt=""><br/><input type="button" value="赞(1)"></li>
<li><img src="data:images/bd.jpg" alt=""><br/><input type="button" value="赞(1)"></li>
</ul>
<script>
//获取所有的按钮
//根据标签名字获取元素
function my$(tagName) {
return document.getElementsByTagName(tagName);
}
//闭包缓存数据
function getValue() {
var value=2;
return function () {
//每一次点击的时候,都应该改变当前点击按钮的value值
this.value="赞("+(value++)+")";
}
}
//获取所有的按钮
var btnObjs=my$("input");
//循环遍历每个按钮,注册点击事件
for(var i=0;i<btnObjs.length;i++){
//注册事件
btnObjs[i].onclick=getValue();
}
// var btnObjs=my$("input");
// var value=1;
// //循环遍历每个按钮
// for(var i=0;i<btnObjs.length;i++){
//
// //为每个按钮注册点击事件
// btnObjs[i].onclick=function () {
// console.log("哈哈");
// this.value="赞("+(value++)+")";
// };
// }
</script>
</body>
</html>
5、沙箱
自调用函数形成的沙箱
沙箱内定义变量与外界同名全局变量不冲突
案例:沙箱内如果没有相关属性或方法,可以访问到沙箱外的相关内容
利用沙箱可避免重名
6、递归
JS膏集04的更多相关文章
- JS膏集05
JS膏集05 1.复习 闭包内的函数也可以使用参数 闭包的建议写法 ) 2.浅拷贝 相当于把一个对象中的所有的内容复制一份给另一个对象.直接复制. 或者说,就是把一个对象的地址给了另一个对象,它们指向 ...
- JS膏集03
JS膏集03 1.复习 原型: * 在构造函数中有一个属性:prototype,是原型,也是一个对象,程序员使用的 * 在实例对象中有一个属性:__proto__,是原型,也是一个对象,浏览器使用的, ...
- JS膏集02
JS膏集02 1.复习 函数也是对象 2.贪食蛇案例 <!DOCTYPE html> <html lang="en"> <head> <m ...
- JS膏集01
JS膏集01 1.动态页面: 向服务器发送请求,服务器那边没有页面,动态生成后,返回给客户端 由html/css/js组成. js还不是面向对象的语言,是基于对象的语言.js中没有类的概念,js的继承 ...
- JS自学笔记04
JS自学笔记04 arguments[索引] 实参的值 1.对象 1)创建对象 ①调用系统的构造函数创建对象 var obj=new Object(); //添加属性.对象.名字=值; obj.nam ...
- 【干货分享】前端面试知识点锦集04(Others篇)——附答案
四.Others部分 技术类 1.http状态码有哪些?分别代表是什么意思? (1).成功2×× 成功处理了请求的状态码.200 服务器已成功处理了请求并提供了请求的网页.204 服务器成功处理了请求 ...
- 使用PM2将Node.js的集群变得更加容易
介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ...
- 【 D3.js 选择集与数据详解 — 5 】 处理模板的应用
在[选择集与数据 - 4]一文中,介绍了一个update.enter.exit的处理模板,这个模板很常用,本文将通过一个例子来讲解其使用方法. 1. 模板 复习一下上一章提到的模板. //绑定数据后, ...
- 【 D3.js 选择集与数据详解 — 4 】 enter和exit的处理方法以及处理模板
绑定数据之后,选择集分为三部分:update.enter.exit.这三部分的处理办法是什么呢?本文将讲解其处理方法,以及一个常用的处理模板. 1. enter的处理方法 如果没有足够的元素,那么处理 ...
随机推荐
- mysql的下载与安装
官网 下载 https://www.mysql.com/ 依次点击:downloads>community>mysql community server,如图所示 image.png ...
- 清北合肥day1
题目: 1.给出一个由0,1组成的环 求最少多少次交换(任意两个位置)使得0,1靠在一起 n<=1000 2.两个数列,支持在第一个数列上区间+1,-1 每次花费为1 求a变成b的最小代价 n& ...
- [转]启动tensorboard
https://vivekcek.wordpress.com/tag/tensorboard-windows/ Visualise Computational Graphs with Tensor ...
- python全栈开发day64-模板-变量和(.)的使用,filters和自定义filter
一.上周内容回顾 day64 内容回顾: 1. 所有的django命令 1. 安装 pip install django==1.11.14 pip install -i 源 django==1.11. ...
- ionic2集成sdk后,连接超时的问题
这几天在测试app的时候,偶尔会发现集成的好视通sdk在进入会议室的时候出现连接超时的问题,一直卡在‘正在获取版本信息’的页面,经反复测试后这种现象主要出现在点击返回按钮和退出登录按钮的时候会出现,也 ...
- You have new mail in /var/spool/mail/root消除提示的方法
有时在进入系统的时候经常提示You have new mail in /var/spool/mail/root 你觉得烦人---解决方法: 修改系统配置文件/etc/profile,告诉系统不要去检查 ...
- fillder--信息面板显示请求耗时列
class Handlers--------->Ctrl+R,找到该方法,加上以下方法即可 { // 显示每行请求的发起时间:时分秒毫秒 public static BindUIColumn(& ...
- Url地址重写
一 什么是url重写URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程.比如浏览器发来请求 hostname/101.aspx ,服务器自动将这个请求中定向为http://h ...
- Kmeans:利用Kmeans实现对多个点进行自动分类—Jason niu
import numpy as np def kmeans(X, k, maxIt): numPoints, numDim = X.shape dataSet = np.zeros((numPoint ...
- Springmvc借助SimpleUrlHandlerMapping实现接口开关功能
一.接口开关功能 1.可配置化,依赖配置中心 2.接口访问权限可控 3.springmvc不会扫描到,即不会直接的将接口暴露出去 二.接口开关使用场景 和业务没什么关系,主要方便查询系统中的一些状态信 ...