《js高级程序设计(第三版)》第五章学习笔记

5.5 Function类型

1.每个函数都是Function类型的实例。函数是对象。函数名是一个指向函数对象的指针。

2.定义函数的方式:使用函数声明语法;使用函数表达式;使用Function构造函数。

3.使用不带括号的函数名是访问函数指针。

4.ES没有重载。

5.解析器会率先读取函数声明,使其在执行任何代码之前可用;函数表达式必须等到解析器执行到所在代码行,才会被解释执行。

6.函数声明提升(function declaration hoisting

7.源代码树

8.除了什么时候可以通过变量访问函数的区别外,函数声明与函数表达式等价。

9.函数内部属性:arguments/this

1arguments是一个类数组对象,有一个callee属性,该属性是一个指针,指向拥有这个arguments对象的函数。可用于解耦合。

2this引用的是函数执行的环境对象

10.函数名仅仅是一个包含指针的变量。

11.ES5:caller。这个属性中保存着调用当前函数的函数的引用。如果在全局作用域中调用当前函数,值为null

12.ES5还定义了arguments.caller。在非严格模式下始终是undefiened

13.函数属性和方法:length/prototypelength表示函数希望接收的参数个数。

14.ES5中,prototype属性是不可枚举的,因此使用for-in无法发现。

15.每个函数都包含两个非继承而来的方法:apply/call()

1)在特定的作用域中调用函数。作用相同,区别仅在于接收参数的方式不同。apply(this, arguments)/apply(this, [num1, num2])

call(this,  num1,  num2)

(2)扩充函数赖以运行的作用域。

16. bind()。创建一个函数的实例,其this值会被绑定到传给bind()函数的值。

17. 每个函数继承的toLocaleString()/toString()/valueOf()始终返回函数的代码。

 

5.6 基本包装类型

1. 3个特殊的引用类型:Boolean/Number/String

2. 基本类型值不是对象。

3. 引用类型和基本类型的主要区别就是对象的生存期。引用类型在执行流离开作用域之前一直保存在内存中。自动创建的基本类型对象只存在与一行代码执行的瞬间,然后立即被销毁。

4. 转型函数/构造函数

5. 布尔表达式中的所有对象都会被转换为true

6. 建议永远不要使用Boolean对象,不建议直接实例化Number类型。

7. 1toFixed()参数制定输出结果中的小数位数。

2toExponential()返回以指数表示法表示的数值的字符串形式,参数制定输出结果中的小数位数。

3toPrecision()得到表示某个数值最合适的格式。参数表示熟知的所有数字的位数(不包括指数部分)。

 

8. 即使字符串中包含双字节字符(不是占一个字节的ASCII字符),每个字符仍然算一个字符。

9. String类型方法:

(1) charAt()以单字符字符串的形式返回给定位置的字符;charCodeAt()返回字符编码。

(2) concat()用于将一个或多个字符串拼接起来,返回拼接得到的新字符串。

(3) slice()/substr()/substring()第一个参数指定开始位置,第二个参数表示子字符串到哪里结束。slice()/substring()的第二个参数指定的是子字符串最后一个字符后面的位置,而substr()的第二个参数指定返回的字符个数。slice()会将传入的负值与字符串的长度相加。substr()将负的第一个参数加上字符串的长度,而将负的第二个参数转换为0substring()把所有负值参数都转换为0

(4) indexOf()/lastIndexOf()。第二个参数表示从字符串的哪个位置开始搜索。

(5) trim()。创建一个字符串的副本,删除前置和后缀的所有空格,然后返回结果。

(6) toLowerCase()/toLocaleLowerCase()/toUpperCase()/toLocaleUpperCase()

(7) match()在字符串中匹配模式。string.match()。本质上与调用RegExg.exec()相同。

(8) search()。返回字符串中第一个匹配项的索引。如果没有匹配项,返回-1

(9) replace()

(10) split()

(11) localeCompare()。如果字符串在字母表中应该排在字符串参数之前,返回-1。返回的数值取决于实现。

(12) fromCharCode()。接收一个或多个字符编码,将其转换成一个字符串。

 

 

5.7 单体内置对象

1.ES实现提供/不依赖于宿主环境的对象,这些对象在ES程序执行之前就已经存在了。

2.内置对象:Object/Array/String

3.单体内置对象:Global/Math

4.Global对象方法:

1isNaN()

2isFinite()

3parseInt()

4parseFloat()

5encodeURI()/encodeURIComponent()。可以对URIUniform Resource Identifiers)进行编码。encodeURI()主要用于整个URIencodeURIComponent()主要用于对URI中的某一段编码。encodeURI()不会对特殊字符编码,除了空格(%20)encodeURIComponent()会对非标准字符进行编码。

6decodeURI()/decodeURIComponent()

7eval()。通过eval()执行的代码可以引用在包含环境中定义的变量。在eval()中创建的任何变量或函数都不会被提升。代码注入。

8Math

5.在所有代码执行之前,作用域中就已经存在两个内置对象:Global/Math

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值