JavaScript基础插曲---apply,call和URL编码等方法
Js基础学习
Js的压缩:
就是利用js的语法格式通过缩短变量名,去掉空格等来进行压缩。
Apply和call的使用
1:apply方法:应用某一对象的方法,用于一个对象替换当前对象。主要是改变this的值。
- <script type="text/javascript">
- var user_name = "阿辉";
- //一个函数,这里主要注意里面的this的含义。
- function showName() {
- alert(this.user_name);
- };
- var p = { user_name: '阿红' };
- showName.apply(p);// 这里通过apply方法来改变函数中this的不同。这里的p就是this.
- </script>
2:call方法:这个和上面的方法是一样的,只是当需要有参数的时候需要逗号来区别,而apply是通过数组的形式来传递的。
这里就是有参数的时候,我们使用apply的时候需要使用数组的形式来传递。
- var user_name = "阿辉";
- //一个函数,这里主要注意里面的this的含义。
- function showName(a,b,c) {
- alert(this.user_name);
- alert(a + b + c);
- };
- var p = { user_name: '阿红' };
- showName.apply(p);// 这里通过apply方法来改变函数中this的不同。这里的p就是this.
- showName.apply(p, [12,12,12]);
- showName.call(p,13,13,13);
上面的代码就是二者的区别。使用的时候我们需要注意这些小的知识点。
函数的递归:
当函数是匿名函数的时候我们使用递归的时候里面的值千万不要直接写赋值的匿名函数,我们需要通过arguments.callee();来表示函数自身。
- var index = 0;
- //定义匿名函数
- var s = function() {
- index++;
- alert(index);
- if (index<5) {
- //s();
- arguments.callee();//表示函数自身
- }
- };
- var ss = s;
- ss();
encodeURL方法:将文本字符串编码为一个有效的统一资源标识符(URL),这个方法不会对那些特殊的字符进行编码,这时我们需要使用encodeURLCompoment方法对这些字符进行编码。这个编码的范围更加的广。
- var msg = 'http://localhost:55186/js%E7%BB%83%E4%B9%A0/js11.html';
- var url_value = window.encodeURI(msg); //只编码文本的字符串
- var sss = window.encodeURIComponent(msg);//编码更加的广泛,前面的数字都进行了编码。
- alert(sss);
- alert(url_value);


Eg:点击实现展示关闭2级菜单。
思路:通过为<p>标签来注册单击事件,接着找到它下面的<ul>,看是否隐藏,在进行操作。{思路很重要,每次的代码都是那样子,只需要学会解决问题的想法,这样就可以以此类推,解决很多的问题。}
- <body>
- <ul id="umenu">
- <li>
- <p>111</p>
- <ul>
- <li>1</li>
- <li>2</li>
- <li>3</li>
- </ul>
- </li>
- <li>
- <p>222</p><ul><li>1</li><li>2</li><li>3</li></ul>
- </li>
- <li>
- <p>333</p><ul><li>1</li><li>2</li><li>3</li></ul>
- </li>
- </ul>
- </body>
Js代码如下:
- window.onload = function () {
- //为每个菜单项注册单击事件
- var ps = document.getElementById('umenu').getElementsByTagName('p');
- //遍历ps,为每个注册单击事件
- for (var i = 0; i < ps.length; i++) {
- ps[i].onclick = function () {
- //1;找到p后面的<ul>,+this.parentNode是找到其父节点;
- var x = this.parentNode.getElementsByTagName('ul')[0];
- //2:判断是否隐藏
- if (x.style.display != 'none') {
- x.style.display = 'none';
- } else {
- x.style.display = 'block';
- }
- };
- }
- };

JavaScript基础插曲---apply,call和URL编码等方法的更多相关文章
- JavaScript基础插曲-练习
Javascript基础学习 eg:利用正则表达式来去掉空格. 1:msg=' Hello ': <script type="text/javascript"> ...
- JavaScript基础插曲—元素样式,正则表达式,全局模式,提取数组
JavaScript基础学习 学习js的基础很重要,可以让自己有更多的技能.我相信这个以后就会用到. Eg:点击选择框,在div中显示出选择的数量 window.onload = function() ...
- JavaScript基础—插曲
Javascript基础 1:js中我们最好使用单引号,其实可以使用双引号的但是为了区别所以js中全部使用单引号.注释和C#的是一样的.网页里面的执行顺序是从上到下依次执行的,不管你js放到哪里,都会 ...
- JavaScript基础插曲—获取标签,插入元素,操作样式
Js基础 1:document.write() 这个是动态创建元素内容,利用js.这个可以利用js来创建元素,文本,标签等,document.write()与document.writeln()的区别 ...
- JavaScript基础—插曲02
Js学习基础 1:关于js中的数组 这里面可以是键值对的形式来存储的,我们必须利用forIn来输出,这就相当于foreach一样. var dir = new Array(); dir['0'] = ...
- URL编码的方法
Global 对象的encodeURI()和encodeURIComponent()方法可以对URI(Uniform ResourceIdentifiers,通用资源标识符)进行编码,以便发送给浏览器 ...
- linux shell实现 URL 编码/解码方法
(1)编码的两种方法 # echo '手机' | tr -d '\n' | xxd -plain | sed 's/\(..\)/%\1/g' # echo '手机' |tr -d '\n' |od ...
- JavaScript 基础数组循环和迭代的几种方法
JavaScript 数组循环和迭代 (之前一直没怎么注意数组循环,今天做一道题时,用到forEach循环发现它并没有按照我想象的样子执行,总结一下数组循环) 一.第一种方法就是for()循环 ...
- JavaScript基础对象创建模式之私有属性和方法(024)
JavaScript没有特殊的语法来表示对象的私有属性和方法,默认的情况下,所有的属性和方法都是公有的.如下面用字面声明的对象: var myobj = { myprop: 1, getProp: f ...
随机推荐
- javascript 设计模式-----外观模式
外观模式是为外部提供简单的接口一种方式,由于模块内部方法庞杂,不能一一对外公开,那么我们需要一个统一的和简单的对外方法(API)来调用这些内在的函数.这时候我们可以用到外观模式: var module ...
- bidi(双向文字)与RTL布局总结
BIDI 双向文字就是一个字符串中包含了两种文字,既包含从左到右的文字又包含从右到左的文字. 大多数文字都是从左到右的书写习惯,比如拉丁文字(英文字母)和汉字,少数文字是从右到左的书写方式比如阿拉伯文 ...
- Nim教程【十二】
排除指定符号 一般情况下使用import语句,会把一个模块内的符号都导入进来 如果你像排除特定的符号(不想让某些符号被导入进来) 可以使用except子句 就像下面这样 import mymodule ...
- Stealth视频教程学习笔记(第一章)
Stealth视频教程学习笔记(第一章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提 ...
- 人机大战之AlphaGo的硬件配置和算法研究
AlphaGo的硬件配置 最近AlphaGo与李世石的比赛如火如荼,关于第四盘李世石神之一手不在我们的讨论范围之内.我们重点讨论下AlphaGo的硬件配置: AlphaGo有多个版本,其中最强的是分布 ...
- 这里有个坑---[NotMapped]不要忘了加
这里有个坑,我们定义实体的时候如果使用了在数据库没有的字段记得加[NotMapped]---------每一个遇到的坑总结后都是一比财富. 在项目中我们一般会使用EF等ORM框架来为我们服务,在ORM ...
- Java连接Oracle数据库开发银行管理系统【一、需求篇】
此系统开发共分为三篇完成. 第一篇[需求篇]:效果展示图,也就是需求部分的展示 第二篇[设计篇]:需求分析和类,接口的设计 第三篇[实现篇]:具体代码实现
- windows下配置nginx+php环境
刚看到nginx这个词,我很好奇它的读法(engine x),我的直译是"引擎x",一般引"擎代"表了性能,而"x"大多出现是表示" ...
- js 优化
一.for循环的优化 <!doctype html> <html lang="en"> <head> <meta charset=&quo ...
- TSQL Merge 用法
在更新数据仓库时,经常需要根据源表对Target表进行数据同步,Merge 命令具有数据更新,删除,插入的功能,专门用于数据同步,并将数据的更新输出到表中.在使用Merge命令时,需要注意when n ...