没有this的JavaScript

 许多JavaScript的难题都是由this引起的。this是一个很让人困惑的东西,这是由于他的语义和其他变量的词法作用域规则有着很大不同。this引用的对象常常和一个函数的词法作用域完全不相关。于是我们常常看到下面的这个小技巧:functionblah(){varthat=this;somethingThatRebindsThings(function(){that.whatever();});}如果你曾经做过一些JavaScript的开发,那么你一定了解其中的痛苦。想象一下,要是我们不需要this那该多好。这可能吗?听起来像是不太可能的样子!我们现在就来看看究竟能不能达成这个目标。我们使用this的动机常常和一个面向对象编程范式中的最有用的抽象有关:状态和行为相辅相成。尤其是在对象拥有许多属性和方法的时候。你可能会觉得如果我们不使用this的话,可能会丢掉这个强大的抽象。如果不使用this,这些对象该怎么来引用它的方法和属性呢?也许你已经猜到了答案:闭包。如果你仔细的考虑一下,闭包就是另一种让状态和对象相辅相成的方法。我们现在就来用一些包含闭包的代码替换传统的包含thi...
代码星球 代码星球·2020-04-03

利用CSS、JavaScript及Ajax实现图片预加载的三大方法

PerishablePress网站近日发表了一篇文章《3WaystoPreloadImageswithCSS,JavaScript,orAjax》,分享了利用CSS、JavaScript及Ajax实现图片预加载的三大方法。下面为译文。 预加载图片是提高用户体验的一个很好方法。图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度。这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速、无缝地发布,也可帮助用户在浏览你网站内容时获得更好的用户体验。本文将分享三个不同的预加载技术,来增强网站的性能与可用性。实现预加载图片有很多方法,包括使用CSS、JavaScript及两者的各种组合。这些技术可根据不同设计场景设计出相应的解决方案,十分高效。单纯使用CSS,可容易、高效地预加载图片,代码如下:viewsource print?1.#preload-01 { background: url(http://domain.tld/image-01.png) no-repeat -9999p...

javascript语言精粹----笔记【转载】

 1.6种值会为假(==false),分别是false,null,undefined,'',0,NaN2.typeof有6种值,分别是'number','string','boolean','undefined','function','object';其中typeof(null),结果是'object'3.number类型总是64位浮点数,两个整数相除也可能出现非整数结果4.如果第一个运算数的值为假,那么运算符&&产生它的第一个运算数的值.否则,它产生第二个运算数的值.如,可利用&&运算符避免检索undefined引起的异常flight.equipment                      //undefinedflight.equipment.model     &n...

Json(JavaScript Object Notation)。

Json(JavaScriptObjectNotation)。Json是一种数据交互格式,一个不能实现数据交互功能的项目是没有任何意义的,大多的Ajax框架的数据交互都基于Json,如:jQuery、ExtJs等。因此理解Json掌握Json并熟练运用是很重要的。以目前主流的开发语言为例,.NET已经把Json封装到类中,无需配置,直接与数据库交互,轻松的封装直接使用;Java就麻烦些,必须去下一个Json包,然后再做一些配置,才可以使用;PHP5.2.0及以后的版本已经封装了Json,支持直接解析。PHP5.2.0以前的版本和Java差不多,也必须下载一个Json插件(和类相似),但是不用配置,直接封装使用。在实际的项目中,各自的取舍配置,都基于项目和需求,并不是每个项目(针对WEB)都一定要用到。但是,如果想在项目中用到此类的Ajax框架,Json的掌握又是必须的。...

数字滚动[javascript]

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>无标题文档</title></head><body><formname="myform"id="myform"><inputtype="text"name="random"id="random"value=""></form><scripttype="text/javascript">(function(){   varcount=0; &nbs...
代码星球 代码星球·2020-04-03

Javascript获取页面元素的位置

 作者:阮一峰制作网页的过程中,你有时候需要知道某个元素在网页上的确切位置。下面的教程总结了Javascript在网页定位方面的相关知识。一、网页的大小和浏览器窗口的大小首先,要明确两个基本概念。一张网页的全部面积,就是它的大小。通常情况下,网页的大小由内容和CSS样式表决定。浏览器窗口的大小,则是指在浏览器窗口中看到的那部分网页面积,又叫做viewport(视口)。很显然,如果网页的内容能够在浏览器窗口中全部显示(也就是不出现滚动条),那么网页的大小和浏览器窗口的大小是相等的。如果不能全部显示,则滚动浏览器窗口,可以显示出网页的各个部分。二、获取网页的大小网页上的每个元素,都有clientHeight和clientWidth属性。这两个属性指元素的内容部分再加上padding的所占据的视觉面积,不包括border和滚动条占用的空间。(图一clientHeight和clientWidth属性)因此,document元素的clientHeight和clientWidth属性,就代表了网页的大小。  functiongetViewport(){    if(document.co...

史上自定义 JavaScript 函数Top 10

http://www.dustindiaz.com/top-ten-javascript/  发布:wpulog|发布时间:2010年4月9日10个被使用的最普遍的用户自定义函数,addEvent(),addLoadEvent(),getElementsByClass(),getCookie(),setCookie(),deleteCookie()等。10)addEvent() functionaddEvent(elm,evType,fn,useCapture){  if(elm.addEventListener){    elm.addEventListener(evType,fn,useCapture);    returntrue;  }  elseif(elm.attachEvent){    varr=elm.attachEvent('on'+evType,fn);&n...

应用程序连接hbase报错:java.net.SocketTimeoutException: callTimeout=60000

背景说明:  今天对生产环境hbase增加了节点,下午的时候一个同事反馈,应用程序后台报错,如下:TueFeb2617:35:35CST2019,null,java.net.SocketTimeoutException:callTimeout=60000,callDuration=68451:row'SYSTEM.CATALOG,TARGETCUST_DATA,99999999999999'ontable'hbase:meta'atregion=hbase:meta,,1.1588230740,hostname=host-10-191-36-24,16020,1551146724629,seqNum=0atorg.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.throwEnrichedException(RpcRetryingCallerWithReadReplicas.java:276)atorg.apache.hadoop.hbase.client.ScannerCallableWithReplicas.c...

javasript 字符串 数组操作

Javascript中经常涉及到对字符串和数组的处理,今天总结一下具体的用法 一操作字符串String对象有很多函数,可以以不同的方式访问和操作字符串,具体方法如下: charAt(index) 返回指定索引处的字符charCodeAt(index) 返回指定索引处的字符的Unicode值concat(str1,str2) 连接多个字符串,返回连接后的字符串的副本fromCharCode() 将Unicode值转换为实际的字符indexOf(subString)  返回指定的subString值第一次出现的地方,如果没有找到,返回-1lastIndexOf(subString) 返回指定的subString最后一次出现的地方,如果没有找到,返回-1match(regex)  搜索字符串,返回正则表达式的所有匹配replace(subString/regex,replacementString) 搜索指定的字符串或正则表达式的匹配,并用新的子串代替匹配的字符串slice...

java 面向对象一

一基础部分1.基本数据类型Java的八种基本数据类型不支持面向对象的编程机制,不具备“对象”的特性:没有成员变量、方法可以调用。java之所以提供这八种基本数据类型,是为了照顾程序员的传统习惯。所有的引用类型的变量都继承了Object类,都可以当成Object类型变量使用,但是基本数据类型就不可以,为了解决这个问题,Java提供了包装类。JDK1.5提供了自动装箱和自动拆箱功能,自动装箱是指,可以把一个基本数据类型的变量直接赋给对应的包装类变量或者是Object变量;自动拆箱是指允许直接把包装类对象直接赋给一个对应的基本类型变量。这里要注意,自动装箱和自动拆箱时必须要类型匹配,如Integer只能自动拆箱成int,不能拆成boolean。2.包装类包装类还可以基本实现基本类型变量和字符串的转换,把字符串转换成基本类型有两种方式:利用包装类提供的parseXxx(Strings)静态方法;利用包装类提供的Xxx(Strings)构造器;如:StringintStr="123";intit1=Integer.parseInt(intStr);intit2=newIn...
代码星球 代码星球·2020-04-03

Java元注解

元注解是指注解的注解,包括@Retention@Target@Document@Inherited四种。1.@Retention:定义注解的保留策略@Retention(RetentionPolicy.SOURCE)  //注解仅存在于源码中,在class字节码文件中不包含@Retention(RetentionPolicy.CLASS)    //默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,@Retention(RetentionPolicy.RUNTIME) //注解会在class字节码文件中存在,在运行时可以通过反射获取到首先要明确生命周期长度SOURCE<CLASS<RUNTIME,所以前者能作用的地方后者一定也能作用。一般如果需要在运行时去动态获取注解信息,那只能用RUNTIME注解;如果要在编译时进行一些预处理操作,比如生成一些辅助代码(如ButterKnife),就用CLASS注解;如果只是做一些检查性的操作,比如@Override和@SuppressWarning...
代码星球 代码星球·2020-04-03

javascript总结

一简介1.JavaScript是一种脚本语言,由LiveScript改名而来,Netscape公司为了推广这个脚本语言,利用了java的知名度,两者并没有什么关系。JavaScript是一种基于客户端浏览器的,基于对象、事件驱动式的脚本语言。2.java和javaScript的关系(1)完全是两个不同的产品,Java是Sun公司推出的面向对象的程序设计语言;JaaScript是Netscape公司的产品,目的是为了拓展Netscape浏览器功能。javaScript是一种可以嵌入Web页面中的解释性语言。(2)Java语言最小的程序单位是类定义,JavaScript中充斥着大量函数。(3)Java是强类型变量语言,所有的变量必须先声明,才可以使用,所有的变量都有其固定的数据类型;JavaScript是弱类型变量语言,变量在使用前无需声明,由解释器在运行时检查其数据类型。3.在实际的使用过程中,还有另一种脚本语言:JScript,由Microsoft公司开发。由于早期JScript和javaScript差异较大,程序员要为两种浏览器分别编写脚本,后来就诞生了ECMAScript,这是一个...
代码星球 代码星球·2020-04-03

javascript 闭包

1.要理解闭包,首先必须理解Javascript特殊的变量作用域。函数内部可以直接读取全局变量,在函数外部自然无法读取函数内的局部变量。出于种种原因,我们有时候需要得到函数内的局部变量。但是,前面已经说过了,正常情况下,这是办不到的,只有通过变通方法才能实现,那就是在函数的内部,再定义一个函数。如:functionf1(){    n=999;    functionf2(){      alert(n);//999    }  }函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的。但是反过来就不行,f2内部的局部变量,对f1就是不可见的。这就是Javascript语言特有的“链式作用域”结构(chainscope):子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。既然f2可以读取f1中的局部变量,那么只要把f2作为返回值,就可以在f1外部读取它的内部变量了。functionf1(){    n=999;    functionf2(){      alert(n);    }   ...
代码星球 代码星球·2020-04-03

javascript 函数 方法

函数1.函数的定义(1)function函数名(x){函数执行体;}(2)var函数名=function(x){函数执行体;};这种方法说明,在javascript中,函数就是一种对象,也就是说,函数也是一种数据类型,参数列表相当于函数的入口,return相当于函数的出口。如:varabs=function(x){  if(x>=0){    returnx;  }else{    return-x;  }};function(x){...}是一个匿名函数,它没有函数名。但是,这个匿名函数赋值给了变量abs,所以,通过变量abs就可以调用该函数。上述两种定义完全等价,注意第二种方式按照完整语法需要在函数体末尾加一个;,表示赋值语句结束。2.函数调用由于JavaScript允许传入任意个参数而不影响调用,因此传入的参数比定义的参数多也没有问题,虽然函数内部并不需要这些参数。abs(10,'blablabla');//返回103.argument...
代码星球 代码星球·2020-04-03

javascript变量 数组 对象

一 变量1.全局变量和局部变量在JavaScript中同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var声明一次。这种变量类型不固定的语言称为动态语言,与之对应的静态语言,如java,赋值时类型不匹配会报错。全局变量:(1)在方法外部声明的变量(2)方法内部,没有加var关键字声明的变量局部变量:方法内部,使用var声明的变量<scripttype="text/javascript">vara=3;//全局变量functiontest(){vara=2;//局部变量alert(a);}test();</script>结果: 如果注释掉vara=2;<scripttype="text/javascript"> vara=3;//全局变量functiontest(){//vara=2;//局部变量alert(a);}test();</script>结果:若将程序改为:<scripttype="text/javascript">functiontest(){c=5;//相当于全局变...
首页上一页...549550551552553...下一页尾页