JavaScript 核心基础

  • A+
所属分类:JavaScript

 

1. 可选的分号

只有在缺少了分号就无法正确解析代码的时候,javascript,才会在一行的最后自动添加;

 

2. 二进制浮点数和四舍五入错误

javascript只能表示1/2,1/8,1/1024等浮点数,但是1/10等是不精确的

3. 日期和时间

4. 模式匹配

5. 布尔值

以上自动转为布尔为false

其他所有值,包括对象和数组都为转为true

6 null和undefined

只有null和undefined无法拥有方法的值

7 全局对象

Window对象定义了核心全局属性,它也针对浏览器和客户端javascript定义了一少部分其他全局属性.

8 包装对象

在读取字符串/数组/布尔的属性和方法是可行的,

但你给她们赋属性值,就是不可行的,因为他们只是临时对象,你给她们赋值只是给她们临时值赋值.而且他们是只读的,不能修改

存取字符串/数组/布尔的属性时创建的临时对象叫做包装对象.

String(),Number(),Boolean(),构造函数就是用来显示创建包装对象的.

9 不可变的原始值和可变的对象引用

原始值 : undefined null 布尔值 数字 字符串 对象引用 : 对象 数组

10 类型转换

数组转String 会使用join()方法

11 转换和相等性

但是==从不会将操作数转为布尔值

12 显示的类型转换

进制转换

数字 => 字符串 处理

字符串 => 数字

对象转换为原始值

对象转字符串 有toString就执行toString,无toString就执行valueOf,若两者都无,报错.

数组转字符串,同理.不过先尝试valueOf

13作用属性的变量

声明一个全局变量时,用var声明的话是不可配置的

但是没用var 是可以配置的

14 +运算符

如果其中一个操作数是对象,则 日期对象通过toString()方法转换,其他对象通过valueOf();
如果其中一个曹所长是字符串,另外一个操作数也会变成字符串.
否则,都转为数字进行运输

15 比较运算符

>=和<=不依赖于==和===,而只是简单的不小于和不大于这样判断,除了出现NaN,都会返回false;

16 typeof运算符

xtypeof x
undefined"undefiend"
null"object"
true/false"boolean"
任意数字和NaN"number"
任意字符串"string"
任意函数"function"
任意内置对象(非函数)"object"
任意宿主对象编译器各自实现,但不是"undefined boolean number string"

17 delete运算符

delete只能删除自身的属性,不能删除继承的`属性

delete删除不存在的属性也返回true

delete不能删除全局属性

18 use strict

在不支持ECMA 5的浏览器下use strict无任何作用.

支持的话表示代码执行严格模式,满足

  1. 禁止使用with
  2. 所有变量都要先声明,否则报错.
  3. 调用函数(不是方法)中的this值是undefined,(非严格this值总数全局对象) javascript //判断是否严格模式 var has_strict_mode = (function() {"use stricut"; return this === undefiend});
  4. 通过call或apply调用函数时,this值就是通过call和apply传入的第一个参数;(非扬模式,null和undefined值会被全局对象转换为对象的非对象值代替)
  5. 给补课操作的值创建新成员会报错(非严格止只是操作失败,不会报错)
  6. eval()的代码不能在调用程序所在的上下文声明/定义函数,非严格模式是可以的,相反,变量和函数定义在eval()创建的新作用域中,这个作用域在eval()返回时弃用了
  7. 函数中的arguments对象拥有传入函数值的静态副本,在非严格模式下,arguments里的数组元素和函数参数都是指向同一个值的引用.
  8. delete运算符后面跟非法标识符(变量,函数,函数参数)时,报错,非严格模式下什么也没做,只返回false
  9. 试图删除不可配置的属性将报错
  10. 不允许不进制速
  11. 严格模式下arguments.caller和arguments.callee,会报错.

19 对象

对象类型

  • 内置对象: ECMAScript定义的对象/类
  • 宿主对象: JavaScript解析器嵌入的宿主环境(浏览器)
  • 自定义对象

20 in hasOwnPreperty propertyIsEnumerable

in 检测自有属性/继承属性 返回true

hasOwnPreperty 检测自身属性

propertyIsEnumberable 检测自身属性 & 可枚举

21 getter setter

22 属性的特性

ECMAScript5新增

  • 可以给原型对象添加方法,并设置成不可枚举
  • 给对象定义不可删除的属性

属性的特性 1. 值 value 2. 可写性 writable 3. 可枚举性 enumerable 4. 可配置性 configurable

可通过Object.getOwnPropertyDescriptor访问

23 对象的三个属性

  • 原型属性

原型属性实在实例对象创建之初就设置好的.

  1. 将对象直接量创建的对象使用Object.prototype作为它们的原型.
  2. 通过new创建的对象使用构造函数的prototype属性作为它们的原型.
  3. 通过Object.create()创建的对象使用第一个参数(也可以是null)作为它们的原型
  • 类属性类

属性只可以通过toString方式访问.

返回类似的字符串[object class]

以下方法可获取class

  • 可拓展性

24 数组

24.1 数组方法

  • 遍历数组之forEach

  • 数组方法
  1. join() : 将数组中的所有元素转换为字符串连接在一起,方法第一个参数可以设置分隔符.
  2. reverse() : 返回逆序数组
  3. sort() : 默认按照字母表排序.

4. concat() : 创建并返回一个新数组.

5. slice() : 返回指定数组的一个片段/子数组

6. splice() : 在数组插入/删除元素的通用方法

concat和splice插入时的区别在于splice会插入数组本身.

  1. push pop 在栈尾操作
  2. unshift & shift : 在栈头操作. 注意unshift中的参数是按顺序插入的.
  3. toString toLocaleString

toString和不使用参数的join作用一致

toLocacleString 能返回自定义的本地化方法返回字符串.

  • ECMAScript 5的数组方法

这些数组方法一般有3个参数,一个个参数

注意forEach无法break停止遍历.,除非放在try里,然后抛出异常

map() : 和forEach类似,但是会把结果放入到一个新数组返回,不会影响旧数组

3.fliter() 返回过滤数组,当returntrue时,不过滤此元素

every() 和 some() : 判断数组是否全部满足/至少一个满足

这两个方法当能觉得返回什么结果时就结束循环

reduce() 和 reduceRight()

indexOf() 和 lastIndexOf() : 返回索引

24.2 数组类型

判断数组类型,typeof对对象除了function都返回object

ECMAScript5 提供 Array.isArray(参数)判断是否为数组

25 函数

当函数挂载在一个对象上,作为对象的一个属性,当通过这个对象来调用这个函数,该对象就是此次函数调用的上下文,即this

25.1 创建函数

  • 函数表达式

该方式无法在定义之前的语句使用.

  • 函数声明式

该方式可以在定义之前的语句中调用.

25.2 函数调用

  1. 作为函数

ECMAScript3和非严格ECMAScript5 this的值为全局对象

严格的ECMAScript5无法调用this

2. 作为方法

作为函数和作为方法调用最大的区别是this

作为方法调用this为对象的上下文

每次用方法调用,都会隐式传入一个实参(调用者的上下文);

3. 作为构造函数

通过它们的call()和apply()调用

在严格模式下,这两个方法第一个实参都会变为this的值.

25.3命名空间

实例: 检测在IE下是否缺少某些变量,有就返回补丁

25.4 闭包

闭包主要作用是为了让内部嵌套的函数能使用外部的局部变量,并该对象能保持局部变量.当创建了一个对象以后,因为作用域链的原因,对象执行完没有被释放.

weinxin
我的微信公众号
我的微信公众号扫一扫

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: