Js基础学习

Js的压缩:

就是利用js的语法格式通过缩短变量名,去掉空格等来进行压缩。

Apply和call的使用

1:apply方法:应用某一对象的方法,用于一个对象替换当前对象。主要是改变this的值。

  1. <script type="text/javascript">
  2.     var user_name = "阿辉";
  3.     //一个函数,这里主要注意里面的this的含义。
  4.     function showName() {
  5.         alert(this.user_name);
  6.     };
  7.     var p = { user_name: '阿红' };
  8.     showName.apply(p);// 这里通过apply方法来改变函数中this的不同。这里的p就是this.
  9. </script>

2:call方法:这个和上面的方法是一样的,只是当需要有参数的时候需要逗号来区别,而apply是通过数组的形式来传递的。

这里就是有参数的时候,我们使用apply的时候需要使用数组的形式来传递。

  1. var user_name = "阿辉";
  2. //一个函数,这里主要注意里面的this的含义。
  3. function showName(a,b,c) {
  4.     alert(this.user_name);
  5.     alert(a + b + c);
  6. };
  7. var p = { user_name: '阿红' };
  8. showName.apply(p);// 这里通过apply方法来改变函数中this的不同。这里的p就是this.
  9. showName.apply(p, [12,12,12]);
  10. showName.call(p,13,13,13);

上面的代码就是二者的区别。使用的时候我们需要注意这些小的知识点。

函数的递归:

当函数是匿名函数的时候我们使用递归的时候里面的值千万不要直接写赋值的匿名函数,我们需要通过arguments.callee();来表示函数自身。

  1. var index = 0;
  2. //定义匿名函数
  3. var s = function() {
  4.     index++;
  5.     alert(index);
  6.     if (index<5) {
  7.         //s();
  8.         arguments.callee();//表示函数自身
  9.     }
  10. };
  11. var ss = s;
  12. ss();

encodeURL方法:将文本字符串编码为一个有效的统一资源标识符(URL),这个方法不会对那些特殊的字符进行编码,这时我们需要使用encodeURLCompoment方法对这些字符进行编码。这个编码的范围更加的广。

  1. var msg = 'http://localhost:55186/js%E7%BB%83%E4%B9%A0/js11.html';
  2. var url_value = window.encodeURI(msg); //只编码文本的字符串
  3. var sss = window.encodeURIComponent(msg);//编码更加的广泛,前面的数字都进行了编码。
  4. alert(sss);
  5. alert(url_value);

Eg:点击实现展示关闭2级菜单。

思路:通过为<p>标签来注册单击事件,接着找到它下面的<ul>,看是否隐藏,在进行操作。{思路很重要,每次的代码都是那样子,只需要学会解决问题的想法,这样就可以以此类推,解决很多的问题。}

  1. <body>
  2.     <ul id="umenu">
  3.         <li>
  4.             <p>111</p>
  5.             <ul>
  6.                 <li>1</li>
  7.                 <li>2</li>
  8.                 <li>3</li>
  9.             </ul>
  10.         </li>
  11.         <li>
  12.             <p>222</p><ul><li>1</li><li>2</li><li>3</li></ul>
  13.         </li>
  14.         <li>
  15.             <p>333</p><ul><li>1</li><li>2</li><li>3</li></ul>
  16.         </li>
  17.     </ul>
  18. </body>

Js代码如下:

  1. window.onload = function () {
  2.       //为每个菜单项注册单击事件
  3.       var ps = document.getElementById('umenu').getElementsByTagName('p');
  4.       //遍历ps,为每个注册单击事件
  5.       for (var i = 0; i < ps.length; i++) {
  6.           ps[i].onclick = function () {
  7.               //1;找到p后面的<ul>,+this.parentNode是找到其父节点;
  8.               var x = this.parentNode.getElementsByTagName('ul')[0];
  9.               //2:判断是否隐藏
  10.               if (x.style.display != 'none') {
  11.                   x.style.display = 'none';
  12.               } else {
  13.                   x.style.display = 'block';
  14.               }
  15.           };
  16.       }
  17.   };

JavaScript基础插曲---apply,call和URL编码等方法的更多相关文章

  1. JavaScript基础插曲-练习

    Javascript基础学习 eg:利用正则表达式来去掉空格. 1:msg=' Hello ': <script type="text/javascript">     ...

  2. JavaScript基础插曲—元素样式,正则表达式,全局模式,提取数组

    JavaScript基础学习 学习js的基础很重要,可以让自己有更多的技能.我相信这个以后就会用到. Eg:点击选择框,在div中显示出选择的数量 window.onload = function() ...

  3. JavaScript基础—插曲

    Javascript基础 1:js中我们最好使用单引号,其实可以使用双引号的但是为了区别所以js中全部使用单引号.注释和C#的是一样的.网页里面的执行顺序是从上到下依次执行的,不管你js放到哪里,都会 ...

  4. JavaScript基础插曲—获取标签,插入元素,操作样式

    Js基础 1:document.write() 这个是动态创建元素内容,利用js.这个可以利用js来创建元素,文本,标签等,document.write()与document.writeln()的区别 ...

  5. JavaScript基础—插曲02

    Js学习基础 1:关于js中的数组 这里面可以是键值对的形式来存储的,我们必须利用forIn来输出,这就相当于foreach一样. var dir = new Array(); dir['0'] = ...

  6. URL编码的方法

    Global 对象的encodeURI()和encodeURIComponent()方法可以对URI(Uniform ResourceIdentifiers,通用资源标识符)进行编码,以便发送给浏览器 ...

  7. linux shell实现 URL 编码/解码方法

    (1)编码的两种方法 # echo '手机' | tr -d '\n' | xxd -plain | sed 's/\(..\)/%\1/g' # echo '手机' |tr -d '\n' |od ...

  8. JavaScript 基础数组循环和迭代的几种方法

    JavaScript 数组循环和迭代   (之前一直没怎么注意数组循环,今天做一道题时,用到forEach循环发现它并没有按照我想象的样子执行,总结一下数组循环) 一.第一种方法就是for()循环   ...

  9. JavaScript基础对象创建模式之私有属性和方法(024)

    JavaScript没有特殊的语法来表示对象的私有属性和方法,默认的情况下,所有的属性和方法都是公有的.如下面用字面声明的对象: var myobj = { myprop: 1, getProp: f ...

随机推荐

  1. 【C语言学习】《C Primer Plus》第1章 概览

    学习总结 1.C语言于1972年由贝尔实验室的Dennis Ritchie在与Ken Thompson一起设计UNIX操作系统的时候开发的.的的设计构想来源于Ken Thompson的B语言.Anyw ...

  2. Aoite 系列(01) - 比 Dapper 更好用的 ORM

    Aoite 是一个适于任何 .Net Framework 4.0+ 项目的快速开发整体解决方案.Aoite.Data 适用于市面上大多数的数据库提供程序,通过统一封装,可以在日常开发中简单便捷的操作数 ...

  3. 解决你的开发烦恼——Aoite 开源前奏

    Aoite(Any one item!) 一个适于任何 .Net Framework 4.0+ 项目的快速开发整体解决方案,敬请关注 Aoite GitHub. 介绍 本项目从2009年孵化(V-&g ...

  4. FusionCharts简单教程(六)-----如何自定义图表上的工具提示

          所谓图表上的工具提示就是当鼠标放在某个特定的数据块上时所显示的提示信息.如下: 禁用显示工具提示       在默认情况下工具提示功能是显示的,但是有时候我们并不是很想需要这个功能提示功能 ...

  5. [nRF51822] 2、D-BUG之诗

    4线SPI彩屏局部刷屏偏移解决 ——原来我早已经在成功的旁边了 最近在研究用低速.低RAM的单片机来驱动小LCD或TFT彩屏实现动画效果 首先我用一个16MHz晶振的m0内核的8位单片机nRF5182 ...

  6. [FPGA] 1、开发板使用和引脚连接

    目录 1.注意事项 2.设备简介 3.引脚分配 注意事项: ① 插拔下载线时必须断电! ② Quartus II 软件和 NIOS 软件的版本必须一致,并安装在同一个目录下面,安装目录不要有中文和空格 ...

  7. iOS——Core Animation 知识摘抄(四)

    原文地址http://www.cocoachina.com/ios/20150106/10840.html 延迟解压 一旦图片文件被加载就必须要进行解码,解码过程是一个相当复杂的任务,需要消耗非常长的 ...

  8. 【译】用jQuery 处理XML-- DOM(文本对象模型)简介

    用jQuery 处理XML--写在前面的话 用jQuery 处理XML-- DOM(文本对象模型)简介 用jQuery 处理XML--浏览器中的XML与JavaScript 用jQuery 处理XML ...

  9. 暂停JS的深入学习

    对于JS的掌握程度,已经满足中级前端工程师的需要了,现在需要入门一下后端的基础知识,如nginx服务器一类的知识,方便今后快速开发. 先来nginx,文章.

  10. Redis集群~StackExchange.redis连接Sentinel服务器并订阅相关事件(原创)

    回到目录 对于redis-sentinel我在之前的文章中已经说过,它是一个仲裁者,当主master挂了后,它将在所有slave服务器中进行选举,选举的原则当然可以看它的官方文章,这与我们使用者没有什 ...