初学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.数据绑定等几个看着十分眼熟的主题.学习过程中倒是也 ...
随机推荐
- 数据库~大叔通过脚本生成poco实体
今天在做开发时,需要把表映射成实体,又没有EF这种工具,就从网上下了一个工具,但使用时觉得太重了,所以就自己写了一个,基于mysql的. 功能:输入表名,得到这个表的poco实体 SELECT COL ...
- 使用 Git 管理源代码(转)
什么是 Git? 非常简单地说,Git 是 Linus Torvalds 最近实现的源代码管理软件.正如所提供的文档中说的一样,“Git 是一个快速.可扩展的分布式版本控制系统,它具有极为丰富的命令集 ...
- PHP流程控制之goto语句
goto 操作符可以用来跳转到程序中的另一位置.该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记.PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和 ...
- postgres formencode.api.Invalid
错误提示: Invalid: expected an int in the IntCol 'geom', got <type 'str'> '010100000007EBFFFC3A611 ...
- 对key中有数字的字典进行排序
word_cloud = []cc = [{"c58":341,"c59":525,"c56":507,"c57":34 ...
- SQL Exists 的用法 转载
比如在Northwind数据库中 有一个查询为 SELECT c.CustomerId, CompanyName FROM Customers c WHERE EXISTS( SELECT O ...
- Java根据byte数组,生成文件
原文出自:https://blog.csdn.net/seesun2012 根据byte数组,生成文件 自己写的小案例,找个地方记录一下 package com.seesun2012.utils; i ...
- 学习安卓开发过程中遇到关于R.Java文件的问题
在学习安卓开发过程时,遇到R.java生成问题,总结几个方法解决. 1.首先必须做的就是检查代码的正确性,存在错误的代码,不编译生成R.java 2.右键点项目,选择 Android Tools -& ...
- 选择排序——Java实现
一.排序思想 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是: 从待排序列中选出最小(或最大)的一个元素,记录其下标(数组)的位置: 将记录的下标值与待排序列的第一个 ...
- js之变量介绍
变量提升 JavaScript的函数定义有个特点,它会先扫描整个函数体的语句,把所有申明的变量“提升”到函数顶部: 'use strict'; function foo() { var x = 'He ...