JavaScript的caller属性和callee属性对比总结 | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (17)
目录1. 背景2. caller属性3. callee属性4. 说明
背景  要说这两个方法,必须先说另一个东西—实参对象(arguments)。标识符arguments是指向实参对象的引用。当传入某个函数的参数个数超过函数定义时指定的形参个数时,默认的处理方法是自动忽略多出来的参数。也就是说,默认这不会引起错误。但是这会有另一个问题:无法获取多出来的参数的引用了(无法知道多出来的参数具体值是什么)。这也正是实参对象arguments可以解决的问题。通过arguments和数字下标,我们就可以获取任意某个传入的参数了。之所以能够通过数字下标,是因为arguments是一个类数组对象,有着以数字为索引的一系列属性(至于什么是类数组对象,在JavaScript的call()、apply()、bind()方法对比总结这篇文章中提到过)。除了这些属性外,正如真正的数组一样,arguments还有一个length属性,用来标识传入参数的总个数。arguments的存在,极大提高了传参的灵活性,可以使得函数扩展性更好,可操作任意数量的参数。在ECMA-262, 3rd官方文档中,对于一个函数被调...阅读全文

使用IntelliJ IDEA构建并运行Java Web的maven项目 | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (21)
目录1. 前言2. 项目代码导出3. 框架配置文件检测4. 将项目添加为maven project5. 项目结构project structure配置6. 本地tomcat服务器配置7. 项目启动
前言  相比于eclipse,IntelliJ IDEA的功能更加丰富,稳定。本文对使用IntelliJ IDEA构建运行一个基于maven管理的Java Web项目的过程进行记录。
项目代码导出菜单栏选择VCS -> Checkout from Version Control -> Subversion
新建关联的SVN仓库,一般是填写内网部署的代码管理服务器地址
根据实际情况,填写访问授权信息
浏览文件结构,选择要导出的项目源码目录
可以看到IDEA在执行checkout任务
框架配置文件检测导出完成后,IDEA会自动对整个项目目录进行indexing,这个过程中会检查到一些配置文件,选择确定即可将项目添加为maven project在项目根pom.xml文件上右键选择 Add as Maven Project,将项目添加为maven项目
可以看到 Add as Mave...阅读全文

CSS3的pointer-events属性及典型应用 | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (25)
目录1. 概念2. 应用13. 应用2
概念  pointer-events是CSS3中的属性,最常用的有以下两个取值:1pointer-events:none|auto
设置“pointer-events:none”后元素永远不会成为鼠标事件的target。但是,当其后代元素的pointer-events属性指定其他值时,鼠标事件可以指向后代元素,在这种情况下,鼠标事件将在捕获或冒泡阶触发父元素的事件侦听器。
应用1  当已经点击“查询”按钮且查询结果尚未返回时,可使用该属性(结合按钮颜色变化)屏蔽按钮的点击事件,防止重复查询:1234567891011function btnStatusHandler(operation){    if(operation == "toSearch"){        $("#submitButton").html("查询中...");        $("#submitButton").css("background-color","#EDEFF3");        $("#submitButton").css("pointer-even...阅读全文

JavaScript的call()、apply()、bind()方法对比总结 | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (28)
目录1. 前言2. call()方法3. apply()方法4. bind()方法5. 注意事项
前言  JavaScript中的函数其实就是一种对象。函数对象也有自己的很多方法。其中,call()方法和apply()方法就是两个用来间接调用函数的方法。两个方法都允许显式地指明调用时的上下文环境(即this的值)。也就是说,这给我们提供了一种自由—任何函数可以作为任何对象的方法来进行调用。并且,两个方法也都允许显式地指明调用时需要用到的实参。函数经call()或apply()调用后会立即执行,而经过bind()方法调用后,只是改变了函数绑定的作用域,要想执行函数,还需要对bind()的返回值(一个函数)进行一次调用。bind()方法的实现也是值得探究的内容。
call()方法参数  f.call(o, value1, value2, ...)  f: 想要调用的方法  o: 想要调用的方法的作用域(也就是在哪个对象上调用该方法)  value1, value2, …: 调用方法时传入的一系列参数使用示例1.简单调用call()方法,作用在当前this对象(浏览器对象)上  
2....阅读全文

使用原生js实现元素拖拽功能 | GCidea's blog

作者:JerryXia | 发表于 , 阅读 (33)
目录1. 前言2. 实现
前言  本篇仅对拖拽过程中核心几个事件监听的写法进行小结,不涉及页面样式效果的展现。
实现12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182//第一个参数传入拖拽DOM节点ID//第二个参数为可选项传入工具名(业务需要,非重点)function dragDom(idName,toolName){    var toolNameVal = typeof toolName == "string" ? toolName : false;//第二个参数为可选参数,表示工具名称    //根据传入id获取对应DOM元素    var oDiv=document.getElementById(idName);    var currentTop,currentLeft,zIndexVal;        if(t...阅读全文