首先声明一下,这个解答是从Segmentfault看到的,挺有意思就记录下来。我放到最下面:

bind()

  https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

Function.prototype.bind 这个方法是 ECMAScript 5 新增加的,在 Firefox 4/Chrome 中都支持,IE8 应该还不支持。

简介:

创建一个 Function ,当这个新的 Function 被调用时,使用给定的 this 值所在的 Context,并且传入给定的参数序列。

语法:

var bound = fun.bind( thisValue, [, arg1 [, arg2 [ ... ] ] ] );

参数:

thisValue:当新的 Function 被调用时,thisValue 会付给其 this 值。如果使用 new 操作符调用 Function,则忽略 thisValue

arg1, arg2, ...:当新的 Function 被调用时,当作参数列表传入,插入在调用时实际参数之前。

--------------------------------------------------我是可爱的分割线-----------------------------------------------------------------------

举个栗子:

链接在此:https://segmentfault.com/q/1010000002508005

你(son)和你爸(papa)在一块的时候,大家都会知道你爸爸的名字(不知道可以直接问啊!),用代码来说就是:

var papa = {
name: "li gang",
son: function() {
return this.name;
}
};
alert( papa.son() );
但是你不和你爸在一块的时候呢?就成了这样: var son = papa.son;
alert( son() );
你会发现你大家没办法知道你爸的名字了,然后你就不能为非作歹了。好在你还记得你爸的电话号码,打个电话就又可以兴风作浪又知道了: alert( son.call(papa) );
然后你想了想,不行啊,不能我每次兴风作浪的时候都得打我爸电话吧,我爸还不得弄死我。诶!这么笨,我随身带着我爸的身份证复印件不就好了嘛,所以你就成了这样: son = son.bind( papa );
alert( son() );
哈哈,爸爸再也不用担心我出门被打叻(๑´ㅂ`๑)! 就这样又过了半年你爸爸大人作死收了一个养子!什么!遗产全部都是我的!养子的中文名叫 二狗子,英文名叫 er~Gou~Zi: function erGouZi() {
return this.name;
}
这个二狗子养子也想知道你爸的名字好出去泡妞把妹歌功颂德,哀求了半天之后,老爸也给了他一份复印件: erGouZi = erGouZi.bind( papa );
alert( erGouZi() );
二狗子这货啊表示非常高兴,决定每次报出爸爸的大名的时候都要加上敬爱的三个字,就像我们经常说敬爱的 x 总理 一样,于是他机智的做了一次小手术: erGouZi = function() {
var prefix = arguments[0] || "";
return prefix + this.name;
}
erGouZi = erGouZi.bind( papa, "great " );
alert( erGouZi() );
又没过多久,这事被老爸知道了。老爸对于二狗子这种舔脚后跟的行为表示非常满意,对他越来越恩爱亲切,对你越来越冷板凳。最后终于老爸把所有的遗产都给了二狗子而你因为平常只会坑蒙拐骗啥技能也不会只能上街乞讨最后被城管暴打而死。 终!

  

最后在放一个关于null和undefined的,这个来源于阮老师 undefined与null的区别 文章里的评论,感兴趣的朋友可以去看看。

null

Q:有张三这个人么?
A:有!
Q:张三在哪?
A:已去世了

undefine:

Q:有张三这个人么?
A:没有!

JavaScript Bind()趣味解答 包懂~~的更多相关文章

  1. 生动详细解释javascript的冒泡和捕获,包懂包会(转)

    前言:虽然精通jquery,但对它的原型javascript却不是很了解,最近在学习javascript中遇到了一些困难,比如冒泡和捕获,很多次被提到,但又不知究竟应用在何处.找到了一些好文章解惑,在 ...

  2. JavaScript内部原理实践——真的懂JavaScript吗?(转)

    通过翻译了Dmitry A.Soshnikov的关于ECMAScript-262-3 JavaScript内部原理的文章, 从理论角度对JavaScript中部分特性的内部工作机制有了一定的了解. 但 ...

  3. 简要谈谈javascript bind 方法

    最近去参加了场面试,跟面试官聊了很多JS基础上的东西,其中有个问题是谈谈对apply.call.bind的理解和区别.顿时一愣,apply.call我知道,经常用的东西,bind是什么鬼!!!好像见过 ...

  4. javascript bind

    bind的作用和apply,call类似都是改变函数的execute context,也就是runtime时this关键字的指向.但是使用方法略有不同.一个函数进行bind后可稍后执行. 定义: fu ...

  5. TOM大叔的几道Javascript题目与解答

    几道JS题目 之前没有深入研究js语言,最近几年前端越来越工程化,需要扎实的js基础,看到博客园上有很多大牛分享JS学习文章,幸运看到tom大叔的blog,抽时间潜心学习了其文章,遇到到其出的几道题目 ...

  6. JavaScript: bind apply call

    var foo = function(age,sex){ console.log(this.name,age,sex); }; //call将改变函数运行的context foo.call({name ...

  7. Java数组、集合的三种遍历方式(包懂)

    1 for循环 for(int i = 0;i<arr.length;i++){ System.out.print(arr[i]+" "); } 2 foreach循环,这种 ...

  8. javascript bind在回调中精简匿名函数的用法

    常规写法: Promise对象回调,匿名函数调用其他方法 更精简的写法: 注:这种写法的使用有两个严苛的限制. 1.回调的结果必须放在实际调用方法参数的最后一位: 2.回调函数中只调用其他一个方法.

  9. JavaScript函数 bind call apply区别

    1. apply calll 在JavaScript中 call 和 apply 都是为了改变某个函数运行时上下文而存在的, 换句话说就是为了改变函数内部的this的指向. 这里我们有一个新的对象 b ...

随机推荐

  1. 利用HTML5定位功能,实现在百度地图上定位

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. HTML5本地存储——IndexedDB(一:基本使用)

    在HTML5本地存储——Web SQL Database提到过Web SQL Database实际上已经被废弃,而HTML5的支持的本地存储实际上变成了 Web Storage(Local Stora ...

  3. 为何JAVA虚函数(虚方法)会造成父类可以"访问"子类的假象?

      首先,来看一个简单的JAVA类,Base. 1 public class Base { 2 String str = "Base string"; 3 protected vo ...

  4. html传参数

    var request = { QueryString: function (paramName) { var url = window.location.search; paramValue = & ...

  5. 数据存储_ SQLite (1)

    一.SQL语句 如果要在程序运行过程中操作数据库中的数据,那得先学会使用SQL语句 1.什么是SQL SQL(structured query language):结构化查询语言 SQL 是一种对关系 ...

  6. 深入理解javascript原型和闭包(5)——instanceof

    又介绍一个老朋友——instanceof. 对于值类型,你可以通过typeof判断,string/number/boolean都很清楚,但是typeof在判断到引用类型的时候,返回值只有object/ ...

  7. socket编程热身程序

    /*server.c*/ #include <stdio.h> #include <arpa/inet.h> #include <sys/types.h> /* S ...

  8. Development of large-scale site performance optimization method from LiveJournal background

    A LiveJournal course of development is a project in the 99 years began in the campus, a few people d ...

  9. 一段freemarker高级分页效果的代码

    <a onclick="page(1)">首页</a> [#if currpage != 1] [#assign last=currpage - 1] &l ...

  10. PhpStorm 9.03 集成 开源中国(oschina.net)的Git项目,提交SVN时注意事项

    第一步:配置 git.exe File -> Default Settings -> Version Control -> Git -> Path go Git executa ...