JS中那些让人头昏眼花的弯子

看别人在讨论,于是整理了下,大家来看看下面代码中1-11分别输出的答案是什么???(不要试过再说)

 

var obj={
    a:1,
    b:2,
    add:function(c,d){
        console.log(this.a+this.b+c+d);
    }
}
var a=b=0;
//1
obj.add(3,4);
//2
var add=obj.add;
add(3,4);
//3
obj.add.call(this,3,4);
//4
obj.add.call(null,3,4);
//5
obj.add.call(window,3,4);
//6
obj.add.apply(this,[3,4]);
//7
obj.add.apply(null,[3,4]);
//8
obj.add.apply(window,[3,4]);
//9
var addOne=obj.add.bind(this);
addOne(3,4);
//10
var addTwo=obj.add.bind(obj);
addTwo(3,4);
//11
var Object={};
var addThree=obj.add.bind(Object);
addThree(3,4);
时间: 2024-08-03 17:58:15

JS中那些让人头昏眼花的弯子的相关文章

js中自定义方法实现停留几秒sleep_javascript技巧

js中不存在自带的sleep方法,要想休眠要自己定义个方法 function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } 以下是补充: 除了Narrative JS,jwacs(Javascript With Adv

js中call、apply、bind的用法

今天看博客时,看到了这样的一段js代码: var bind = Function.prototype.call.bind(Function.prototype.bind); 我想突然看到这样的一段代码,即使js能力再强的人,可能也需要花点时间去理解.像我这样的菜鸟就更不用说了.其实,原文已经对这端代码做出了解释,但我还是想用我的想法去解释这段代码. 上面那段代码涉及到了call.bind,所以我想先区别一下call.apply.bind的用法.这三个方法的用法非常相似,将函数绑定到上下文中,即用

js中widow.open()方法使用详解

本文为大家详细介绍下js中widow.open()方法的各项参数及使用示例,有想学习的朋友可不要错过了,希望对大家有所帮助   一.window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二.基本语法: window.open(pageURL,name,parameters) 其中: pageURL 为子窗口路径 name 为子窗口句柄 parameters 为窗口参数(各参数用逗号分隔) 三.示例: 复制代码 代码如下:

Node.js中的流(Stream)介绍

 这篇文章主要介绍了Node.js中的流(Stream)介绍,本文讲解了什么是流.pipe方法.流的分类.Readable流状态的切换等内容,需要的朋友可以参考下     什么是流? 说到流,就涉及到一个*nix的概念:管道--在*nix中,流在Shell中被实现为可以通过 |(管道符) 进行桥接的数据,一个进程的输出(stdout)可被直接作为下一个进程的输入(stdin). 在Node中,流(Stream)的概念与之类似,代表一种数据流可供桥接的能力. pipe 流化的精髓在于 .pipe(

解决JS中乘法的浮点错误的方法

 本篇文章主要介绍了解决JS中乘法的浮点错误的方法.需要的朋友可以过来参考下,希望对大家有所帮助 JS里做小数的乘法运算时会出现浮点错误,具体可以测试一下:     <script>  alert(11*22.9)  </script>    结果是251.89999999999998 而不是251.9     这个问题想必有很多人为之头痛.那么如何解决呢?在此给出解决办法.    1.    代码如下: <script>  alert(11*(22.9*10)/10)

js mysql-怎么把js中获得的数据存到数据库

问题描述 怎么把js中获得的数据存到数据库 ozan.onclick=function(){ var val=0; if(count==0){ oren.innerHTML=val+1+""人觉得很赞""; count=15; flag=setInterval(done1000); }else{ 我要把这个val值存到数据库,下次再取 受教了,各位大神们 解决方案 1,ajax把val传到后端(phpjava等),在后端写入数据库:2,如果用node.js可以直接写

在Node.js中使用MySQL&amp;MySQL JavaScript客户端

NoSQL 数据库最近一段时间都是很受追捧的,也许已经是 Node.js 应用程序的首选后端了.不过,你不应该只是根据潮流来选择拿什么技术构建下一个项目,使用什么数据库类型要取决于项目的特定需求.如果你的项目涉及到动态表的创建,实时的插入等等,那么 NoSQL 就是不错的技术路线,而另一方面,如果项目中要处理复杂的查询和事务,那么 SQL 数据库就更加合适了. 在本教程中,我们会向你介绍如何使用 MySQL 模块 - 这是一个用 JavaScript 编写的运行在 Node.js 之上的 MyS

从一个组件的实现来深刻理解JS中的继承

其实,无论是写什么语言的程序员,最终的目的,都是把产品或代码封装到一起,提供接口,让使用者很舒适的实现功能.所以对于我来说,往往头疼的不是写代码,而是写注释和文档!如果接口很乱,肯定会头疼一整天. JavaScript 最初是以 Web 脚本语言面向大众的,尽管现在出了服务器端的 nodejs,但是单线程的性质还没有变.对于一个 Web 开发人员来说,能写一手漂亮的组件极为重要.GitHub 上那些开源且 stars 过百的 Web 项目或组件,可读性肯定非常好. 从一个例子来学习写组件 组件教

js 中 Date.now()相减会出现 NaN 的问题,求教

问题描述 js 中 Date.now()相减会出现 NaN 的问题,求教 首先js代码如下 setTimeout(function() { var a = 0,wdw1; $($(".yscroll_list_left li")[0]).clone(!0).insertAfter($($(".yscroll_list_left li")[$(".yscroll_list_left li").length - 1])); var len = $(&