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 ...
随机推荐
- 基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用
大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中 ...
- 公共代码参考(httpclient)
public class HttpClientUtils { private static final String CHARSET = "UTF-8"; /* * http ge ...
- iOS 常见设计模式
(一)代理模式/委托模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现.优势:解耦合敏捷原则:开放-封闭原则实例:tableview的 数据源delegate,通过和 ...
- 每天一个linux命令(56):netstat命令
netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UD ...
- Redis集群~StackExchange.Redis(10月6号版1.1.608.0)连接Twemproxy支持Auth指令了
回到目录 对于StackExchange.Redis这个驱动来说,之前的版本在使用Proxy为Twemproxy代理时,它是不支持Password属性的,即不支持原始的Auth指令,而我也修改过源代码 ...
- Atitit 项目的主体设计与结构文档 v3
Atitit 项目的主体设计与结构文档 v3 1. 实现的目标2 1.1. cross device跨设备(pc 手机 平板)作为规划2 1.2. 企业级Java体系与开发语言2 1.3. 高扩展性, ...
- ini_set("display_errors","On");和error_reporting(E_ALL);
在用php做网站开发的时候 , 为防止用户看到错误信息,而出现的不友好界面.故一般性会在php.ini里设置:display_errors = Off;不过在开发的时候,我们有时候需要打开错误信息.这 ...
- Struts2--ONGL--值栈
ONGL:用来访问栈里对象属性的语言,通常由Struts标签来解析, 注意:要在接续OGNL的页面加入<%@ taglib prefix="s" uri="/str ...
- SQLSERVER中的ALLOCATION SCAN和RANGE SCAN
SQLSERVER中的ALLOCATION SCAN和RANGE SCAN 写这篇文章的开始,我还不知道ALLOCATION SCAN的工作原理是怎样的,网上资料少得可怜 求助了园子里的某位大侠,他看 ...
- 【WP 8.1开发】上下文菜单
在桌面系统中,别说是开发者,相信有资格考得过计算机一级的人都知道什么叫一下文菜单,或者叫右键菜单. 为了让操作更方便,在手机应用程序中,也应当有这样的菜单.上下文菜单之所以有”上下文“之说,是因为通常 ...