初学bind
其实项目中还没有用到。
但自己还是想逐步了解一些高级的JS语法,不是为了炫技,也不像找前端的工作。
主要目的是:1.学习设计思想,提升解决问题的能力2.让自己的脑子动起来,别太笨。
简单的几句话总结一下call,apply和bind:
apply方法和 call方法基本一致,但是允许你以数组的形式向被调用的函数传递参数.
all是立即执行函数的,因此我们提供的 onclick handler是函数的执行结果而不是函数本身.我们需要JavaScript的另一个特性来解决这个问题:bind方法。
bind方法:对于给定函数,创建具有与原始函数相同的主体的绑定函数。 在绑定函数中,this 对象将解析为传入的对象。 绑定函数具有指定的初始参数。
bind function.bind(thisArg[,arg1[,arg2[,argN]]])
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script language="JavaScript">
var checkNumeericRange = function(value){
if(typeof value !=='number')
return false;
else
return value>=this.minimum && value<=this.maxmum;
}
var checkNumeericRange1 = function(value,r){
if(typeof value !=='number')
return false;
else
return value>=r.minimum && value<=r.maxmum;
}
var range = {minimum:10,maxmum:20};
var boundCheckNumericRange = checkNumeericRange.bind(range);
var result = boundCheckNumericRange(12);
var result1=checkNumeericRange(12);
var result2=boundCheckNumericRange(21);
var result3=boundCheckNumericRange('adssad');
var result4=checkNumeericRange1(12,range);
document.writeln(result);//true
document.writeln(result1);//false
document.writeln(result2);//false
document.writeln(result3);//false
document.writeln(result4);//true
</script>
</body>
</html>
第二个:bind改变原有的this对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script language="JavaScript">
var originalObject={
minimum:50,
maxmum:100,
checkNumericRange:function(value){
if(typeof value !== 'number')
return false;
else
return value>=this.minimum && value<=this.maxmum;
}
} var result=originalObject.checkNumericRange(10);
document.writeln(result); var range={minimum:10,maxmum:20}; //MSDN的原版写法
// Create a new version of the checkNumericRange function that uses range.
var boundObjectWithRange = originalObject.checkNumericRange.bind(range);
// Check whether 10 is in the numeric range.
var result = boundObjectWithRange(10); // 这样写也可以:
// var boundObjectWithRange=originalObject.checkNumericRange.bind(range,39);
// var result=boundObjectWithRange()
document.write(result);
</script>
</body>
</html>
第三个:利用[,arg1[,arg2[,argN]]]传入参数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script language="JavaScript">
var displayArgs = function(val1,val2,val3,val4){
document.write(val1 + " " + val2 + " " + val3 + " " + val4);
}
var emptyObject = {};
var displayArgs2 = displayArgs.bind(emptyObject,12,"a");
displayArgs2("b","c");
</script>
</body>
</html>
初学bind的更多相关文章
- 【Win10】UAP/UWP/通用 开发之 x:Bind
[Some information relates to pre-released product which may be substantially modified before it's co ...
- 初学socket,c语言写的简单局域网聊天
在客户端所在的目录新建一个IP.bwj的文件,写上服务端的IP,不要带空格,保存.双方都打开一个客户端和一个服务端就可以聊天了,(可以写自己的IP,自己跟自己聊..)没有第三方服务器,服务端所在的电脑 ...
- 理解javascript中的Function.prototype.bind
在初学Javascript时,我们也许不需要担心函数绑定的问题,但是当我们需要在另一个函数中保持上下文对象this时,就会遇到相应的问题了,我见过很多人处理这种问题都是先将this赋值给一个变量(比如 ...
- 基于Bind实现的DNS正反向解析及主从DNS的配置
一.什么是DNS? 1.1 简单的理解,Domain Name System,是互联网一项核心的服务,他作为一个桥梁可以将域名和IP地址相互因素的一个分布式数据库,能够使人更加方便的访问互联网,而不用 ...
- Asp.Net初学小结 判断数组中是否有重复的数据
Asp.Net初学小结 第一章 1.搭建Asp.net开发环境 1).net FrameWork(VS) 2)IIS(xp:5.1,2003:6.0,vista:70,win7:7.5) ...
- 【spring boot】SpringBoot初学(2.1) - properties读取明细
前言 算是对<SpringBoot初学(2) - properties配置和读取>的总结吧. 概念性总结 一.Spring Boot允许外化(externalize)你的配置.可以使用pr ...
- std::bind接口与实现
前言 最近想起半年前鸽下来的Haskell,重温了一下忘得精光的语法,读了几个示例程序,挺带感的,于是函数式编程的草就种得更深了.又去Google了一下C++与FP,找到了一份近乎完美的讲义,然后被带 ...
- JS核心系列:浅谈 call apply 与 bind
在JavaScript 中,call.apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这 ...
- UWP中新加的数据绑定方式x:Bind分析总结
UWP中新加的数据绑定方式x:Bind分析总结 0x00 UWP中的x:Bind 由之前有过WPF开发经验,所以在学习UWP的时候直接省略了XAML.数据绑定等几个看着十分眼熟的主题.学习过程中倒是也 ...
随机推荐
- Kettle集群部署(1台Windows主机和2台Linux服务器)
不多说,直接上干货! http://blog.csdn.net/jianglushou9763/article/details/70859616
- Apache Beam的架构概览
不多说,直接上干货! Apache Beam是一个开源的数据处理编程库,由Google贡献给Apache的项目,前不久刚刚成为Apache TLP项目.它提供了一个高级的.统一的编程模型,允许我们通过 ...
- Rabbitmq~对Vhost的配置
rabbitmq里有一些概念我们要清楚,如vhost,channel,exchange,queue等,而前段时间在部署rabbitmq环境时启用了虚拟主机vhost,感觉他主要是起到了消息隔离的作用, ...
- C语言中extern的用法--转
http://blog.sina.com.cn/s/blog_52deb9d50100ml6y.html 在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的, ...
- 【卷土重来之C#学习笔记】(一)c#文章导航目录
[卷土重来之C#学习笔记](一)c#文章导航目录 [卷土重来之C#学习笔记](二)c#编程概述 [卷土重来之C#学习笔记](三)类型.存储.对象 [卷土重来之C#学习笔记](四)类的基本概念 [卷土重 ...
- linux机械磁盘服务器分区方案
/boot分区:用来存放与linux系统启动有关的程序,比如启动引导装载程序等,建议大小为100MB /usr分区:用来存放linux系统中的应用程序,其相关数据较多,建议大于3GB. /var分区: ...
- BlackLowKey主题CSS
/* Minification failed. Returning unminified contents. (151,61): run-time error CSS1062: Expected se ...
- CSS+DIV进度条
<style type="text/css"> .Bar { position: relative; width: 200px; /* 宽度 */ border: 1p ...
- hibernate表关系
1.一对一 用户表可以查分成两个表,一个userInfo.一个userLogin表 实现方式: (1)使用外键:外键+唯一性约束+非空约束 (2)公用主键:公用主键,从表的主键同时也是外键,来源于主表 ...
- Java使用TCP聊天程序
前面使用了UDP进行通信的聊天程序 现在做一个用TCP进行通信的聊天程序 原理: ServerSocket Socket 1.开一个线程监听端口,准备接收消息 2.不断接受消息发送到目的端口 P.S. ...