一、对象
1.1对象的概述
对象(object)是大括号定义的无序的数据集合,由键值对构成,键与值之间用冒号分隔,如果对象内部包含多个键值对,每个键值对之间用逗号分隔,最后一个键值对末尾不用加逗号。大括号末尾要使用分号表示对象定义结束。
对象是JavaScript的核心概念,也是最重要的数据类型。JavaScript的所有数据都可以被视为对象。此外,JavaScript 允许自定义对象。
var obj = { key : value };
上面代码定义了一个对象,它被赋值给变量obj。key是“键名”,value是“键值”。
1.2健名
键名也被称为属性(property),对象的所有属性都是字符串,所以加不加引号都可以。但是,如果属性不符合标识符的条件(比如第一个字符为数字,或者含有空格或运算符),则必须加上引号。
var obj = {
‘1p’: “Hello World”,
‘h w’: “Hello World”,
‘p+q’: “Hello World”
};
上面对象的三个属性,都不符合标识名的条件,所以必须加上引号。
1.3键值
键值是属性所对应的具体的值。javascript的对象的键值可以是任何数据类型。
var frank = {
name: “Frankenstein Add”,
age: 18,
sex: “male”,
ability: function eat(){
console.log(“吃吃吃”);
}
};
如果一个属性的值(ability)为函数,通常把这个属性称为“方法”。它可以像函数那样调用这个属性。frank.ability();
1.4对象的创建
直接使用大括号创建对象
var obj = {};
var girlFriend = {
girlName:“迪丽热巴”,
age:18,
height:“166cm”,
width:“45kg”
};
console.log(girlFriend);
1.5对象属性的读写
1、读取属性
读取对象的属性,有两种方法:一种是使用点运算符,还有一种是使用方括号运算符。
语法:var obj = { key:value };
console.log(obj.key);
console.log(obj[‘key’]);
需要注意的是,使用方括号读取对象属性的时候需要加引号!
var girlFriend = {
girlName:“迪丽热巴”,
age:18,
height:“166cm”,
width:“45kg”
};
console.log(girlFriend.girlName);//迪丽热巴
console.log(girlFriend[“age”]);//18
2、写入属性
点运算符和中括号运算符都能够给对象的属性赋值,无论属性是否存在(存在修改属性值,不存在增加属性)。
var girlFriend = {
girlName:“迪丽热巴”,
age:18,
height:“166cm”,
width:“45kg”
};
girlFriend.girlName = “古力娜扎”;
girlFriend[“where”] = “地球村”;
console.log(girlFriend);
中括号运算符总是能代替点运算符。但点运算符却不一定能全部代替中括号运算符。
(1)中括号运算符可以用字符串变量的内容作为属性名。点运算符不能。
(2)中括号运算符可以用纯数字为属性名。点运算符不能。
girlFriend[“1height”] = “166cm”;//正常
girlFriend.1height = “166cm”;//报错
1.6对象属性的操作
1、检查对象是否包含一个属性
‘key’ in obj
检查的是键名,不是键值。如果包含就返回true,否则返回false。
var girlFriend = {
girlName:“迪丽热巴”,
age:18
};
console.log(“age” in girlFriend);//true
console.log(“height” in girlFriend);//false
2、遍历对象的所有属性
for (var variable in object)
{
执行的代码……
}
循环变量 variable表示的是对象的属性名,并不表示属性的值!千万注意
var girlFriend = {
girlName:“迪丽热巴”,
age:18,
height:“166cm”,
width:“45kg”
};
for(var i in girlFriend){
console.log(girlFriend[i]);
}
1.7对象的引用
如果不同的变量名指向同一个对象,那么它们都称为这个对象的引用。
也就是说这些变量共同指向同一个内存地址,修改其中一个变量所指向的值,都会影响到其他所有变量所指向的值。
var obj = { fire : ‘burn’ };
var people1_fire = obj;
var people2_fire = obj;
obj.fire = ‘灭了’;
console.log(people1_fire.fire);//灭了
console.log(people2_fire.fire);//灭了
var a = 10;
var b = a;
console.log(a);//10
console.log(b);//10
a = 100;
console.log(a);//100
console.log(b);//10
var obj1 = {
boyName:“李现”,
age:18
};
var obj2 = obj1;
console.log(obj1);//{boyName: “李现”, age: 18}
console.log(obj2);//{boyName: “李现”, age: 18}
obj1.boyName = “张一山”;
console.log(obj1);//{boyName: “张一山”, age: 18}
console.log(obj2);//{boyName: “张一山”, age: 18}
二、函数
2.1函数的概述
官方:函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
个人:函数是一组拥有某些特定功能的、能够被重复调用的、闭合代码块。(不权威)
上图中【做包子的机器】就可以被看做是一个函数。
有某些特定功能的:能包包子
能够被重复调用的:机器能使用多次
闭合:机器在外面看不到里面有什么
我们在函数外部并不关心函数里面有什么,只关心函数能做什么。(使用机器能够得到包子)
函数的意义:在出现大量程序相同的时候,可以封装为一个function,这样只用调用一次,就能执行很多语句。
2.2函数的声明
1、function命令法
function 函数名(参数1,参数2,…){
函数体
}
定义一个函数,用关键字function来定义,function就是英语“功能”的意思。表示这里面定义的语句,完成了一些功能。function后面有一个空格,后面就是函数名字,函数的名字也是关键字,命名规范和变量命名是一样的。名字后面有一对儿圆括号,里面放置参数,我们一会儿介绍。然后就是大括号,大括号里面是函数的语句。
函数如果不调用,那么里面的语句就一辈子不会执行,不调用就等于白写。
function hello(){
console.log(“hello”);
}
2、函数表达式法
var 变量名 = function(参数1,参数2,…){
函数体
};
这种声明函数的方式没有函数名,而是用变量来指代函数。调用函数的时候通过访问变量名来调用函数。
var hello = function(){