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 ...
随机推荐
- 渣渣小本求职复习之路每天一博客系列——Unix&Linux入门(5)
前情回顾:昨天简单地介绍了一下如何使用vi编辑器,例如命令模式和插入模式的切换,以及一些简单命令的讲解. —————————————————————————直接就开始吧———————————————— ...
- rsync permission denied created directories have no permissions
这个问题坑了好几天 最后被此贴解决 http://stackoverflow.com/questions/5798807/rsync-permission-denied-created-directo ...
- 简单JavaScript模版引擎优化
在上篇博客最简单的JavaScript模板引擎 说了一下一个最简单的JavaScript模版引擎的原理与实现,作出了一个简陋的版本,今天优化一下,使之能够胜任日常拼接html工作,先把上次写的模版函数 ...
- CentOS 6.6下Redis安装配置记录
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/120.html?1455855209 在先前的文章中介绍过redis,以下 ...
- Node.js~sails.js~package.json的作用
回到目录 我们在sails框架进行node.js开发时,会涉及到项目的迁移,当迁移后可能你的module即丢失,这时,希望快速的安装所有的包包,可以使用下面命令 1 cd 你当前的sails项目 2 ...
- Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js
Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js 1.1. 封装性是面象对象编程中的三大特性之一 三个基本的特性:封装.继承与多态1 1.2. 魔 ...
- Atitit 微信支付 支付结果通用通知
Atitit 微信支付 支付结果通用通知 Wechat hto sh ma 返回页面return_url - 熊佳佳的博客 d ,only notyfi url-... 接口链接 该链接是通过[统一 ...
- asp.net mvc 使用ajax请求 控制器 (PartialViewResult)分部的action,得到一个分部视图(PartialView)的HTML,进行渲染
在asp.net mvc 使用ajax请求获取数据的时候,我们一般是返回json或者xml,然后解析这些数据进行渲染,这样会比较麻烦,可以请求一个 分部action,返回一个分部视图 直接可以渲染,不 ...
- Git Sophisticated Commands
Compare two branches: branch_1 and branch_2: git diff branch_1…branch_2 Merge specified files of one ...
- 编译原理LL1文法分析树(绘图过程)算法实现
import hjzgg.analysistable.AnalysisTable; import hjzgg.first.First; import hjzgg.follow.Follow; impo ...