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整个知识体系不熟,看来需要找些书脑补一下,同时欢迎众网友监督. 大神推荐书籍 看了博客大神们推荐的 ...
随机推荐
- tf.identity 个人理解
tf.identity is useful when you want to explicitly transport tensor between devices (like, from GPU t ...
- SQL server 2012完全删除
第一步,在控制面板里面找到程序——卸载程序这一项,打开之后就会是这样的了 第二步,经过第一步打开卸载程序后,在里面找到Microsoft SQLserver 2012 (64-bit)这一项,可以通过 ...
- JS----贪吃蛇游戏
在网上找到的几种例子 <!DOCTYPE html> <html > <head> <meta http-equiv="Content-Type&q ...
- springboot-day01-引入如何读取配置文件以及helloWorld
前言:该文章是紧接上一篇文章http://www.cnblogs.com/newAndHui/p/8058527.html 3.3. 实战 3.3.1.读取外部的资源配置文件 通过@PropertyS ...
- html实现导航栏效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- c#批量更新list对象sql
注意: 1.语句中"set "后有空格, 2.最后一个if一定有值,且接连的sql字段 无 逗号 3.parameterList.Clear(); /// <summary ...
- python lambda 函数
lambda 函数,也叫匿名函数,是一个不需要使用def 关键字定义的小函数.返回一个函数地址. 表达式只能有一个,参数可以有多个. a = lambda x:x*x a(3) 返回的是9
- 【翻译】View Frustum Culling --2 Geometric Approach – Extracting the Planes
在上一篇中,我们知道了视锥体的形状,并且也确定了我们进行裁剪时的步骤.那我们接下来要走的就是确定视锥体的六个平面: near, far, top, bottom, left and right 2.计 ...
- 665. Non-decreasing Array
Given an array with n integers, your task is to check if it could become non-decreasing by modifying ...
- mysql数据库解决中文乱码的问题
http://jingyan.baidu.com/article/647f0115937be97f2148a894.html 一个一劳永逸的方法, 修改mysql的配置文件my.ini 在这个配置文件 ...