JavaScript对象可以分为原生对象(内置对象)和宿主对象两种:

  1. 原生对象:也叫内置对象,JS语言中预定义的对象,由ECMAScript标准定义独立于宿主环境,因此兼容性较好;
  2. 宿主对象:由JS运行环境比如浏览器提供的对象,由于宿主对象由浏览器厂家自己定义因此早期版本存在较多兼容问题,主要包括BOM对象和DOM对象两种;

Javascript官方手册

1. ECMAScript原始类型与引用类型

ECMAScript原始类型是相对与引用类型而言,同时ECMAScript的变量也有两种:原始值和引用值。

原始值是存储在栈(stack)中的简单数据段,是真实地址;而引用值是存储在堆(heap)中的对象,是指向数据真实地址的指针。

原始类型只有五种:

  • Undefined:只有一个值即undefined,比如var temp; 这个时候temp的值就是Undefined类型,值的内容是undefined;如果函数无返回值也是undefined;
  • Null:只有一个值null,Undefined对象由Null对象派生而来,两者计算上相等但代表意义不同,null表示尚未存在的对象,相当于占位符;
  • Number:可以表示32位的整数也可以表示64位的浮点数;可以定义八进制/十六进制/科学计数法;特殊值:Number.MAX_VALUE/MIN_VALUE,NaN;
  • String:没有固定大小的原始类型,特殊字符如\n(换行),\r(回车),\t(制表符),\b(空格),\o001(八进制),\x01(十六进制),\u0001(Unicode字符);
  • Boolean:两个值true和false,可以与1和0互换;
// 1. Null与Undefined
alert(null == undefined); // 输出true
// 2. Number
alert(isNaN("new")); // 输出true
alert(isNaN("123")); // 输出false
// 3. 转换函数
// 转换成字符串有两种方法: String()函数与toString()方法
var num = 10;
alert(num.toString()); // 输出 "10"
alert(num.toString(2)); // 输出 "1010"
alert(num.toString(16)); // 输出 "A"
alert(String(null)); // 输出 "null"
alert(null.toString()); // 报错
// Number函数
alert(Number(undefined)); // 输出 NaN
alert(Number(null)); // 输出 0
alert(Number("1.2")); // 输出 1.2
alert(Number("1.2.2")) // 输出 NaN
alert(Number(new Object())) // 输出 NaN
// Boolean函数
alert(Boolean("")); // 输出 0
// 数值友好转换函数: parseInt/parseFloat
alert(parseInt("12345asw")); 输出 12345
alert(parseInt("red")); 输出NaN

2. ECMAScript原生对象

所有对象默认具有属性:contructor、prototype,具有方法:toString()、toSource()、valueOf()(返回对象的原始值)

Global对象具有特殊性

在JavaScript中不属于任何其他对象的属性和方法,都属于它的属性和方法。

所以,事实上,并不存在全局变量和全局函数;所有在全局作用域定义的变量和函数,都是 Global 对象的属性和方法。

因为 JavaScript没有定义怎么调用 Global 对象,所以,Global.属性或者 Global.方法()都是无效的。(Web 浏览器将 Global 作为 window 对象的一部分加以实现)

对象名称

重要方法

重要属性

其它

Number

toFixed: 转成字符串

toPrecision: 转成指定位数

 

NaN

MAX_VALUE

MIN_VALUE

POSITIVE_INFINITY

NAGATIVE_INFINITY

var num = new Number(13.58);

num.toFixed(1); // 结果为13.6

num.toPrecision(6); // 结果为13.5800

String

indexOf: 字符串搜索

concat: 连接字符串

charAt: 返回指定位置字符串

charCodeAt: 返回Unicode

search: 按正则搜索

replace: 按正则/字符串替换

split: 切割字符串成数组

substring: 截取字符串

toLowerCase: 变成小写

toUpperCase: 变成大写

length

1. 按字符串搜索:str.indexOf("World")

2. 按正则模式搜索:str.search(/World/)

Boolean

建议使用原始值


var falseObj = new Boolean(false);

var result = falseObj && true; // 结果为true

// 原因是falseObj计算的是它自身而不是原始值

Object

hasOwnProperty

isPropertyOf


1. 遍历对象方法:for (item in items) {...}

2. 原始方法:Object.keys()/values()/freeze()等

3. 其它所有的对象都是继承的Object类

Array

pop: 从尾部删除

shift: 从删除头部

push: 加在尾部

unshift: 加在头部

concat

join 

slice: 不修改原数组

splice: 修改原数组

length

 

1. arrObj.slice(start, end);

// 作用: 返回数组部分值,原数组不变

// start: 必需, 包含下标元素

// end: 可选, 结束下标(不包含下标元素)

2. arrObj.splice(index, howmany, item1...itemx);

// 作用: 向/从数组添加/删除元素,返回删除元素

// index: 必需, 整数,添加/删除元素的位置

// howmany: 必需, 如果为0代表添加元素

// itemx: 可选, 向数组中添加的元素

Date

Date: 返回完整日期时间

getDate: 返回日

getMonth: 返回月

getFullYear: 返回年

getTime: 时间戳(毫秒)

Date.parse(): 静态函数, 指定时间的毫秒数

Date.UTC(): 静态函数,根据世界时间返回毫秒数

 

var milisecs = Date.parse('Jul 9 2009');

// 结果:1247068800000

var milisecs = Date.UTC(2009, 9, 7);

// 结果:1247068800000

RegExp

compile: 编译正则表达式

exec: 返回匹配结果

test: 返回是否匹配

global(g标记)

ignoreCase(i标记)

multiline(m标记)

source(源文本)

lastIndex

.: 匹配任意字符除了换行和行结束符

\w与\W: 匹配单词与非单词

\d与\D: 匹配数字与非数字字符

\s与\S: 空白字符与非空白字符

\0: 匹配NUL字符(字符串结束符)

\127与\x24与\u1274: 八进制/十六进制/Unicode

(blue|green): 指定匹配

new RegExp(/is(?=ni)/); // 匹配It is nihao

new RegExp(/is(?!=ni)/); // 不匹配It is nihao

Function

 

length: 参数个数

var sayHI = new Function(num, "alert(num)");

Global

内置对象, JS实现提供的,

在ES程序执行前已经存在了,不需要自己创建。

parseInt/parseFloat

eval/isNaN

encodeURI/decodeURI

encodeURIComponent

(对非标准字符编码)

decodeURIComponent

undefined

null

NaN

Object

Function

Array

var val = 8; // 默认属于Global对象属性

console.log(Global.val); // 报错

console.log(window.val); // 结果为8

val == Global.undefined; // 报错

val == undefined; // 不报错

eval('var num=5');

console.log(num); // 结果为5

Math

abs: 绝对值

ceil: 上舍入

floor: 下舍入

round: 四舍五入

pow: 返回数值幂值

random: 0.1 - 1.0随机值

PI

E

LN2

LN3

1. Math.ceil(-5.1); // 结果为-5

2. Math.floor(-5.1); // 结果为-6

3. Math.pow(2, 3); // 结果为8

4. 10+random()*20; // 返回10-30之间随机值

Error

 

name

message

try { ... } catch(err) {console.log(err.message)}

3. BOM浏览器对象

4. DOM文档对象

对象名称

重要方法/属性

Document

document.write()

document.writeln()

document.URL

document.title

document.referrer

document.open()

元素对象

document.getElementById('id').id

document.getElementById('id').parentNode

document.getElementById('id').innerHTML

document.getElementById('id').children

document.body.className

document.body.addEventListener()

document.body.appendChild()

属性对象

document.getElementByTagName("H1")[0].getAttributeNode("style").value = "color: green";

document.getElementByTagName("button")[0].attributes.length;

document.getElementByTagName("button")[0].attributes.removeNamedItem("type");

document.getElementByTagName("button")[0].attributes[0].name;

var attrs = document.getElementByTagName("button")[0].attributes;
attrs[0] == attrs.item(0); // 结果为true

事件对象

var obj = document.getElementById('id');

obj.onlick() = function() {};

obj.onmouseup() = function() {};

obj.onmousedown() = function() {};

obj.onkeyup() = function() {};

obj.onkeypress() = function() {};

obj.onkeydown() = function() {};