javascript 高级程序设计 八
function 类型:
1、ECMAscript中函数和类C语言的函数有这很多不同。其中之一就是js的函数没有重载。并且多次定义一个同名的函数,当调用这个函数的时候,
会调用最后一次定义的函数。
2、函数声明与函数表达式
js解析器会先读取函数声明function sum(){...},并使其在执行任何代码之前使其可用,以便调用。而函数表达式var sum = fuction(){...}必须等
到解析器执行到它所在行的代码时,才会真的被解析执行。
3、函数内部属性
在函数的内部有两个特殊的对象:arguments和this,
arguments代表的是传入函数体中参数的组合(类型一个数组,保存着这个函数所有的参数),这个对象还有另一个callee属性。calle是一个指针-
指向拥有这个arguments对象的函数。
ep:在第归算法中,为了避免后期改变了函数名,而忘记修改第归函数中的函数名的情况。可以用这个方式实现第归
function factorial(num){
if(num <= 1){
return 1;
}else{
return num * arguments.callee(num - 1);
} }
这样可以保证无论使用怎样的第归函数的名字都可以完成第归的调用。
this:和java、c#等函数中的this大概类似,this代表调用函数的调用者的环境变量。
因为函数在js中也是对象,所以每个函数都有两个属性:prototype和length。
prototype:指的是函数的原型。prototype是保存所有实例方法的真正所在,利用toString(),valueOf()方法都是在prototype下,
只不过是通过各自的实例对象访问罢了。
length:指的是函数希望接受的参数的个数,而不一定是实际接受的参数的个数。
function中还有两个非继承来的方法:apply(),call();(主要目的是扩展函数赖以运行的作用域)
function sum(num1, num2){
return num1 + num2;
}
function callSum(num1, num2){
return sum.apply(this, arguments);//apply(函数运行的作用域,参数数组);
//return sum.apply(this, [num1, num2]);
}
call()和apply()是一样的,只是接受的参数不同,apply接受的是参时的数组,call接受的是直接传递参数:sum.call(this,num1,num2);
4、基本包装类型
在js中只有三个基本类型(Bollean,Number,String).不是对象,其他的所有的js中的内容都是基于对象的。
当我们定义一个var str = "String";其实是执行了三个步骤:1、创建String类型的一个实例。2、在实例上调用指定的方法。3、销毁这个实例。
由上可得到基本包装对象和引用类型的主要区别是:使用new创建的基本包装对象,在执行流离开当前作用域之前都是一直存在的,而基本包装
类型的对象,则只存在一行代码执行的瞬间,然后就销毁了。这意味着我们不能在执行时为基本数据类型添加属性和方法。
5、Global对象
Global对象中的最主要的几个方法:
1、encodeURI和encodeURIComponent()的原因所在。
encodeURI是对整个URI进行url编码。而encodeURIComponent只是对URI后面的字符(也就是参数)进行URL编码。(常用)
2、eval()
eval()就像一个完整的js解析器,可以将一些字符串解析成为JS可以识别的代码。如var a = "[obj1 = {name: 1,age: 2},obj2 = {name: 2,age: 4}]";eval(a);
就可以把a这个字符串解析成为一个数组。在接受服务器端传过来的json字符串的时候非常有用。
javascript 高级程序设计 八的更多相关文章
- JavaScript高级程序设计(八):基本概念--操作符
操作符包括:算术操作符.位操作符.关系操作符和相等操作符. 一元操作符 1.只能操作一个值得操作符,即递增和递减操作符: 2.递增(++)和递减(--)操作符包括:前置型和后置型.前置型位于要操作的变 ...
- javascript高级程序设计学习笔记
javascript高级程序设计,当枕头书已经好久了~zz 现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...
- <JavaScript>如何阅读《JavaScript高级程序设计》(一)
题外话 最近在看<JavaScript高级程序设计>这本书,面对着700多页的厚书籍,心里有点压力,所以我决定梳理一下..探究一下到底怎么读这本书.本书的内容好像只有到ES5...所以只能 ...
- 如何阅读《JavaScript高级程序设计》(一)
题外话 最近在看<JavaScript高级程序设计>这本书,面对着700多页的厚书籍,心里有点压力,所以我决定梳理一下..探究一下到底怎么读这本书.本书的内容好像只有到ES5...所以只能 ...
- 《JavaScript高级程序设计(第3版)》笔记-序
很少看书,不喜欢看书,主要是上学时总坐不住,没有多大定性,一本书可以两天看完,随便翻翻,也可以丢在角落里几个月不去动一下. 上次碰到了<JavaScript高级程序设计(第3版)>感觉真的 ...
- 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介
前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...
- 【javascript学习——《javascript高级程序设计》笔记】DOM操作
DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口).DOM描绘了一个层次节点树,允许开发人员添加.移除和修改. 1.节点层次 <html> <head& ...
- 读javascript高级程序设计00-目录
javascript高级编程读书笔记系列,也是本砖头书.感觉js是一种很好上手的语言,不过本书细细读来发现了很多之前不了解的细节,受益良多.<br/>本笔记是为了方便日后查阅,仅作学习交流 ...
- 《JavaScript高级程序设计》读书笔记--前言
起因 web编程过程使用javascript时感觉很吃力,效率很低.根本原因在于对javascript整个知识体系不熟,看来需要找些书脑补一下,同时欢迎众网友监督. 大神推荐书籍 看了博客大神们推荐的 ...
随机推荐
- linux软连接(转)
这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接. 这个命令最常用的参数是-s,具体用法是:sudo l ...
- python闭包的代码
- JAVA语言 第六周
时间太快了,过几天就要去学校了.在家里学习不下去,一点不心静.学习也不如刚放假的时候了. 活在被开学支配的恐惧下,每天看一会儿视频(书是真的难看下去). 效果不明显,这个暑假已经被拉开差距 了.提前几 ...
- jenkins 添加节点问题
没有 Launch agent via Java Web Start 选项 Manage Jenkins > Configure Global Security > TCP port fo ...
- shell脚本中比较两个小数的办法
具体情况#man bc 然而对小数进行比较的相关方法有几个: 1. 自己的解决方法,判断小数点后最多有几位数(N),然后对将要比较的两个数值进行 乘与10的N次方 也就是将小数点去掉来进行比较(小数点 ...
- Android Studio 统计行数
开发中常常会想看看自己累积在这个项目中写了多少代码了,以下就是在Android Studio查看统计项目代码总行数的方法. 打开Android Studio,按快捷键Ctrl+Shift+A 输入fi ...
- SO\PR\MO\排产回写的数据如下
QTYOPEN(WMENG).EDATU(promised_mat_availdate).... insert into OUT_ORDER_RES ' ; --PR 净需求 ' ; ---加上PR回 ...
- Spring的一些资源
1.http://spring.io/ 2.http://projects.spring.io/spring-framework/
- [Android] TextView长按复制实现方法小结(转载)
这是别人写的,既然别人总结过了,那我就不花时间研究这个了,但往后会补充一些使用经验之类的 原文地址:http://blog.csdn.net/stzy00/article/details/414778 ...
- angularjs directive scope 与父scope双向绑定
参考 http://www.jb51.net/article/83051.htm angluar.module("aaa").directive("testDirecti ...