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#调试入门篇

    DotNet程序的调试,是DotNet程序员必备的技能之一,开发出稳定的程序.解决程序的疑难杂症都需要很强大的调试能力.DotNet调试有很多方法和技巧.现在本文就介绍一下借助DebugView工具进 ...

  2. 用DirectX实现魔方(三)视角变换及缩放(附源码)

    在本系列第一篇介绍过鼠标按键的功能,如下. 左键拖拽 - 旋转魔方 右键拖拽 - 变换视角 滚轮 - 缩放魔方 今天研究一下如何实现后面两个功能,用到的技术主要是Arcball,Arcball是实现M ...

  3. 12小时包你学会基于ReactMix框架的ReactNativeApp开发(一)Hello World!

    ReactMixhttps://github.com/xueduany/react-mix自从昨天发布起来,得到了不少小伙伴的热捧,很高兴帮助大家解决了憋在心中很久的问题“如果我只会HTML,Css, ...

  4. easy-ui 小白进阶史(二):操作数据,easy-ui操作

    easy-ui的操作及交互: Html: @using LangBo.Facade; @using LangBo.DataDefine; @using System.Threading.Tasks; ...

  5. Ubuntu 下配置Ganglia监控

    Ganglia是比较知名的开源监控系统, 运维上需要关注的一些通用的状态都有所涉及.其组成主要是gmond(监控程序),gmetad(信息收集程序),web(监控数据展现app).ubuntu的apt ...

  6. Java程序员的日常 —— 《编程思想》持有对象

    集合框架可以说是Java里面必备的知识点了,日常的使用中也会遇到各种情况需要使用到集合.下面就简单介绍下各种集合的使用场景: List List可以看做是数组,实现的方式有两种: ArrayList ...

  7. 带你走近AngularJS - 体验指令实例

    带你走近AngularJS系列: 带你走近AngularJS - 基本功能介绍 带你走近AngularJS - 体验指令实例 带你走近AngularJS - 创建自定义指令 ------------- ...

  8. FIR.im Weekly - 这是多产的一周

    前方干货颇多,请备好小板凳,泡好茶,慢慢看. 上周四到周六(23号-25号),由 infoQ 主办的 QCon 在北京召开,各技术大牛围绕敏捷开发.技术架构.开发实践等话题进行了技术分享与探讨. QC ...

  9. iOS-UICollectionView

    1--------------------------------------------------------------------------------------------------- ...

  10. node.js 简介

    简介:     Node,是一个可以让 JavaScript 运行在服务器端的平台.它可以让 JavaScript 脱离浏览器的束缚运行在一般的服务器环境下     Node.js 是一个为实时Web ...