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整个知识体系不熟,看来需要找些书脑补一下,同时欢迎众网友监督. 大神推荐书籍 看了博客大神们推荐的 ...
随机推荐
- stringBuffer和stringBulider的区别
今天去面试了,问了最基础的stringBuffer和stringBulider的区别,我没有回答出来.之前就知道自己的基础很差,没想到这么差. 网上看了一下资料,stringBuffer和string ...
- Mybatis之mapper.xml配置文件中的#{}和${}
#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换.#{}可以有效防止sql注入. #{}可以接收简单类型值或pojo ...
- DM 9000网卡驱动移植
1. 由于内核已经带有DM9000 网卡的驱动,所以主要移植工作是在板文件中添加 platform_device 结构,并加入 ok6410_devices[] __initdata 数组. 代码如下 ...
- JS----贪吃蛇游戏
在网上找到的几种例子 <!DOCTYPE html> <html > <head> <meta http-equiv="Content-Type&q ...
- KMP与AC自动机模板
HDU 1711 Number Sequence(KMP模板题) http://acm.hdu.edu.cn/showproblem.php?pid=1711 #include<bits/std ...
- flume 使用手册
以下jie皆来自官网: 1:首先版本是flume 1.8 查看版本: bin/flume-ng version 2:配置与启动 https://flume.apache.org/FlumeUserG ...
- Centos7 安装 erlang rabbitmq
1.安装Erlang依赖采用官网的rpm包的形式进行安装,不采用yum(由系统进行自动安装 可能因为版本低的问题而出现一系列问题) erlang依赖 rpm包下载地址https://github.co ...
- Loading Assets from AssetBundles
[Loading Assets from AssetBundles] 1.LoadAsset GameObject gameObject = loadedAssetBundle.LoadAsset&l ...
- elastic search 查询
eelastic search主要有两种查询方式,一种是查询字符串,一种是请求体(json格式)查询. 查询字符串: 查询字符串的功能相对简单,使用容易. 比如GET http://localhost ...
- 将MYSQL的GBK数据库转成_UTF-8数据库的简便方法
http://wenku.baidu.com/link?url=epKvsEtUbtzdjQEezGdFMDvJiro3X1yKNgb-1cXzi7CEoYhtoJhImkuyTvVgSmfL6AQL ...