JavaScript基础插曲---apply,call和URL编码等方法

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. ??};

时间: 2024-10-15 20:52:25

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

JavaScript基础—插曲

Javascript基础 1:js中我们最好使用单引号,其实可以使用双引号的但是为了区别所以js中全部使用单引号.注释和C#的是一样的.网页里面的执行顺序是从上到下依次执行的,不管你js放到哪里,都会按照顺序进行执行的.若是js中出现了错误,只是不继续执行此js中<script></script>的代码,但是网页中其余的js代码还是会执行的. 2:书写js代码的时候我们必须为其加上分号,这样的好处有二:1,可以便于压缩:2,提高了代码的可读性,可维护性. 3:js中的数据类型. 我

JavaScript基础—插曲02

Js学习基础 1:关于js中的数组 这里面可以是键值对的形式来存储的,我们必须利用forIn来输出,这就相当于foreach一样. var dir = new Array(); dir['0'] = '1111'; dir['1'] = '2222'; dir['2'] = '3333'; alert(dir['0']); for (var key in dir) { ????alert('1'+key+'2'+dir[key]); } 键值对集合的形式 var dicr = { '0': 'a

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

JavaScript没有特殊的语法来表示对象的私有属性和方法,默认的情况下,所有的属性和方法都是公有的.如下面用字面声明的对象: var myobj = { myprop: 1, getProp: function () { return this.myprop; } }; console.log(myobj.myprop); // `myprop` is publicly accessible console.log(myobj.getProp()); // getProp() is publ

Javascript最简单的把html字符串编码的方法

html字符串是指’<div id=”a”>aklsdjfklsjdfl</div>’这样的带html特殊符号的字符串,我们通常要对他进行处理再输出以免输出成了真正的html元素,也就是把<变成<这样的html符号代码. 如果字符串很长,里面特殊符号很多,我们该怎么简单而高效的把他们全部转码呢?循环?正则表达式?都不用!且看: function bian(a){return new Option(a).innerHTML} 这就是全部了!使用方法: function b

Jquery源码中的Javascript基础知识(四)— jQuery.fn.init方法

$() 即调用了jQuery.fn.init方法 jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context, rootjQuery ); } 下面是init方法代码: 1 init: function( selector, context, rootjQuery ) { 2 var match, elem; 3 if ( !selector ) { 4 return this; 5

【基础进阶】URL详解与URL编码

作为前端,每日与 URL 打交道是必不可少的.但是也许每天只是单纯的用,对其只是一知半解,随着工作的展开,我发现在日常抓包调试,接口调用,浏览器兼容等许多方面,不深入去理解URL与URL编码则会踩到很多坑.故写下此篇文章,详解一下 URL .    URL 与 URI 很多人会混淆这两个名词. URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符). URI:(Uniform Resource Identifier 的缩写,统一资源标识符). 关

【转】关于URL编码/javascript/js url 编码/url的三个js编码函数

来源:http://www.cnblogs.com/huzi007/p/4174519.html 关于URL编码/javascript/js url 编码/url的三个js编码函数escape(),encodeURI(),encodeURIComponent() 本文为您讲述关于js(javascript)编码url的相关问题.(js中url编码&符号后传值给其它页面,多参数网址作为整体编码后传值.如:http://www.ilcng.com/index.html?id=http://ilcng

【阮一峰】深入研究URL编码问题及JavaScript相应的解决方案

作者: 阮一峰 日期: 2010年2月11日 一.问题的由来 URL就是网址,只要上网,就一定会用到. 一般来说,URL只能使用英文字母.阿拉伯数字和某些标点符号,不能使用其他文字和符号.比如,世界上有英文字母的网址 “http://www.abc.com”,但是没有希腊字母的网址“http://www.aβγ.com”(读作阿尔法-贝塔-伽玛.com).这是 因为网络标准RFC 1738做了硬性规定: "...Only alphanumerics [0-9a-zA-Z], the specia

关于URL编码/javascript/js url 编码/url的三个js编码函数

关于URL编码/javascript/js url 编码/url的三个js编码函数escape(),encodeURI(),encodeURIComponent() 本文为您讲述关于js(javascript)编码url的相关问题.(js中url编码&符号后传值给其它页面,多参数网址作为整体编码后传值.如:http://www.ilcng.com/index.html?id=http://ilcng.com/xmxy/?id1=1&id2=2)这个时候参数id所获得的值并不是 http:/