对象(Object)
对象是JS中的引用数据类型
对象是一种复合数据类型,在对象中可以保存多个不同数据类型的属性
使用typeof检查一个对象时,会返回object
对象的分类:
1.内建对象
- 由ES标准中定义的对象,在任何的ES的实现中都可以使用
- 比如:Math String Number Boolean Function Object….
2.宿主对象
- 由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
- 比如 BOM DOM(浏览器对象模型、文档对象模型)
3.自定义对象
- 由开发人员自己创建的对象
方式一:
1
|
var obj = new Object();
|
方式二:
1
|
var obj = {};
|
向对象中添加属性
语法:
对象.属性名 = 属性值;
对象["属性名"] = 属性值; //这种方式能够使用特殊的属性名
对象的属性名没有任何要求,不需要遵守标识符的规范,但是在开发中,尽量按照标识符的要求去写。
属性值也可以任意的数据类型。
读取对象中的属性
语法:
对象.属性名
对象[“属性名”] //“属性名”带引号即为在对象中寻找具有该属性名的属性,不带引号是变量,寻找变量值为该属性名的属性。
如果读取一个对象中没有的属性,它不会报错,而是返回一个undefined。
删除对象中的属性
语法:
1
|
delete 对象.属性名
|
检查属性
使用in检查对象中是否含有指定属性
语法:属性名 in 对象
如果在对象中含有该属性,则返回true
如果没有则返回false
使用对象字面量,在创建对象时直接向对象中添加属性
语法:
1
|
var obj = {
|
(记住最后一个名值对不加逗号)
基本数据类型和引用数据类型内存中的区别
基本数据类型
String Number Boolean Null Undefined
引用数据类型
Object
基本数据类型的数据,变量是直接保存的它的值在栈内存中。
变量与变量之间是互相独立的,修改一个变量不会影响其他的变量。
引用数据类型的数据,变量是保存的对象的引用(内存地址)在栈内存中,而对象会在创建时在堆内存中开辟一段空间,将对象放入其中。
如果多个变量指向的是同一个对象,此时修改一个变量的属性,会影响其他的变量。
比较两个变量时,对于基本数据类型,比较的就是值,
对于引用数据类型比较的是地址,地址相同才相同。
枚举对象中的属性(使用for...in语句)
1
|
var obj = {'0':'a','1':'b','2':'c'};
|
函数(Function)
函数也是一个对象,函数对象,也具有普通对象的功能(能有属性)。函数对象是一个有功能的对象。
函数中可以封装一些代码,在需要的时候可以去调用函数来执行这些代码。
使用typeof检查一个函数时会返回function。
创建函数
可以使用构造函数去创建函数,但是这种方法一般不采用。
函数声明
1
|
function 函数名([形参1,形参2...形参N]){
|
函数表达式
1
|
var 函数名 = function([形参1,形参2...形参N]){
|
函数表达式,实质上就是创建一个匿名函数,然后将其赋值给一个变量。
调用函数
语法:函数对象([实参1,实参2…实参N]);
fun() sum() alert() Number() parseInt()
当我们调用函数时,函数中封装的代码会按照编写的顺序执行。
形参和实参
形参:形式参数
定义函数时,可以在()中定义一个或多个形参,形参之间使用,隔开
定义形参就相当于在函数内声明了对应的变量但是并不赋值,
形参会在调用时才赋值。
实参:实际参数
调用函数时,可以在()传递实参,传递的实参会赋值给对应的形参,
调用函数时JS解析器不会检查实参的类型(需要检查是否符合类型)和个数(多余不会被赋值,少的话未对应的形参值是undefined),可以传递任意数据类型的值。
返回值 (函数执行的结果)
使用return 来设置函数的返回值。
语法:return 值;
该值就会成为函数的返回值,可以通过一个变量来接收返回值。
return后边的代码都不会执行,一旦执行到return语句时,函数将会立刻退出。
return后可以跟任意类型的值,可以是基本数据类型,也可以是一个对象。
如果return后不跟值,或者是不写return则函数默认返回undefined。
调用函数和函数对象
mianji() ,这是一个调用函数,相当于使用了返回值。
mianji,这是一个函数对象,相当于使用函数对象。
立即执行函数
函数定义完,立即被调用,这种函数叫做立即执行函数。
立即执行函数往往只会执行一次。
1
|
(function(a,b){
|
方法(method)
可以将一个函数设置为一个对象的属性,
当一个对象的属性是一个函数时,
我们称这个函数是该对象的方法。
对象.方法名();
回调函数
学识浅薄,如有错误,恳请斧正,在下不胜感激。