- JavaScript学习过程中的个人笔记,详细请看https://www.liaoxuefeng.com/wiki/1022910821149312
- 再次感谢廖大
对象
- 在JS中一切都是对象。
- 为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是返回一个字符串。
typeof 123;
typeof NaN;
typeof 'str';
typeof true;
typeof undefined'//'undefined
typeof Math.abs;
typeof null;
typeof [];
typeof [];
- 注意null类型也是object,Array雷刀也是object,用typeof将无法区分出null、Array和通常意义上的object-----[]。
包装对象
- JS提供了包装对象,用new创建。
- 包装对象的类型已经变成object了,和原始值用===比较会返回flase。
- 所以进来不要使用包装对象,尤其是针对string类型。
- 几条规则
1)不要使用new Number()、new Boolean()、new String()创建包装对象;
2)用parseInd()或parseFloat()来转换任意类型到number。
3)用String()来转换任意类型到string,或者直接调用某个对象的toString()方法。
4)通常不必把任意类型转换为boolean再判断,可以直接写if(value){}。
5)typeof可以判断出number、boolean、string、function和undefined。
5)判断Array要使用Array.isArray(arr)。
6)判断null请使用myVar === null。
7)判断某个全局变量是否存在用 typeof window.myvar === ‘undefined’。
8)函数内部判断某个变量是否存在用typeof myVar === ‘undefined’。 - number对象调用toString()时需要注意
123..toString();
(123).toString();
Date
- 在JavaScipt中,Date对象用来表示日期和时间
- 创建指定日期的方法
var d = new Date(2015, 5, 19 ,20 ,15, 30, 123);
d;
var d = Date.parse('2015-06-24T19:49:22.875+08:00');
d;
d = new Date(d);
d;
- Date对象表示的时间总是按浏览器所在时区显示的,不过我们也可以显示UTC时间,通过d.toUTCString();
RegExp(正则表达式)
\d 匹配一个数字
\w 匹配一个数字或字母
\s 匹配一个空格,包括Tab等空白符
. 匹配任意字符
* 表示任意个字符,包括0个
+ 表示至少一个字符
? 表示0个或1个字符
{n} 表示n个字符
{n,m} 表示n-m个字符
[] 表示范围
^ 表示行头
$ 表示行尾
JSON
- JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。
- 在JSON中,一共就几种数据类型:number,boolean,string,null,array,object。
- JSON定死了字符集必须是UTF-8。
- JSON的字符串必须使用双引号“”,Object的键也必须使用双引号“”。
- 可以把一个JavaScript对象序列化为一个JSON格式字符串,才能够通过网络传递给其他计算机。同样收到一个JSON格式的字符串,只需要把它反序列化成一个JavaScript对象,就可以直接使用该对象了。
- JSON.stringify():序列化方法。
- JSON.parse():反序列化方法
面向对象
- JavaScript没有Class的概念,所有对象都是实例,所谓继承关系就是把一个对象的原型指向另一个对象而已。
- 在JavaScript代码运行期,可以多次改变原型的指向关系。
- JavaScript对每个创建的对象都会设置一个原型,指向它的原型对象。
创建对象
- 可以通过一种构造函数的方法来创建对象,先定义一个普通函数,然后用new关键字来调用这个函数,就会返回一个对象。
- 用构造函数方式创建的对象还从原型上获得一个constructor属性,它指向函数本身。
- 一般按照约定,构造函数首字母应大写,普通函数首字母应小写。
- 原型继承实现方式是:
1)定义新的构造函数,并在内部用call()调用希望继承的构造函数,并绑定this。
2)借助中间函数F实现原型链继承,最好通过封装的inherits函数完成。
3)继续在新的构造函数的原型上定义新方法。 - ES6引入了关键字class,目的是让定义类更简单。