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整个知识体系不熟,看来需要找些书脑补一下,同时欢迎众网友监督. 大神推荐书籍 看了博客大神们推荐的 ...
随机推荐
- Oracle Error
1. TNS:listener does not currently know of service requested in connect descriptor 数据库连接出错
- Mac中安装tensorflow(转)
当我们开始学习编程的时候,第一件事往往是学习打印"Hello World".就好比编程入门有Hello World,机器学习入门有MNIST.MNIST是一个识别手写数字的程序 M ...
- SPSS-回归分析
回归分析(一元线性回归分析.多元线性回归分析.非线性回归分析.曲线估计.时间序列的曲线估计.含虚拟自变量的回归分析以及逻辑回归分析) 回归分析中,一般首先绘制自变量和因变量间的散点图,然后通过数据在散 ...
- 消息中间件MQ详解及四大MQ比较
一.消息中间件相关知识 1.概述 消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手段之一.当今市面上有很多主流 ...
- JAVA 实验报告
石家庄铁道大学信息科学与技术学院 实验报告 2018年----2019年 第一学期 题目: 四则运算.生成验证码 课程名称: JAVA语言程序设 ...
- Html----开头
Html开头 *<meta http-equiv='content-type' content='text/html;charset=utf-8'>*定义字符编码,这是必须有的 后另存为 ...
- Python __init__ 特殊方法
在Python中有很多以双下划线开头且以双下划线结尾的固定方法.他们会在特定的时机被触发执行. __init__ 就是其中之一,它会在实例化之后自动被调用.以完成实例的初始化. >>> ...
- 区分action, service和dao
在这里,我们不仅要处理页面逻辑,还要做业务逻辑,还要做数据访问.比如说: public String addUser() { if(user == null) { return FAIL_NO_USE ...
- 由于html元素加载导致的问题
js中要求执行的事件是在完全加载完,但由于本地环境测试一直没发现出问题,在上线后由于网络延迟导致元素加载慢,而事件执行完,没达到预期目标. 这时就需要用到属性 readyState readyStat ...
- 搭建harbor仓库、LDAP认证
ldap: 192.168.199.177 c5game.com 宿主机:192.168.199.224 测试客户机:192.168.199.223 安装docker.docker-compose 访 ...