第一~二章
什么是对象
JavaScript中的对象:值的集合
JavaScript里面几乎所有的东西都是对象
如何使用对象
创建方式
第一种
var cat={
'name':'Tom',
'age':4,
'family':['father','mom'],
'speak':function(){
console.log('喵~');
}
}
第二种
var cat=new Object();
var cat={};
第三种
Object.create()
赋值:
修改已有的值:
1. cat.name='Tim';
2. cat['name']='Tim';
创建新值:
cat.type='la';
读取值
console.log(cat.name);
console.log(cat['name']);
console.log(cat.type);
删除
delete cat.name;
delete cat['name'];
检测对象中的属性
console.log('name' in cat);
若存在,返回true,否则,返回false
for...in
语法:
**遍历对象中的各个属性**
for(变量 in 对象)
{
执行代码;
}
变量可以是数组的元素,也可以是对象的属性
eg:
for(var p in cat)
{
console.log(p);
}
遍历cat中每一个属性,将cat中属性名保存到p中
console.log(cat.p);
console.log(cat['p']);
//cat属性名是p的字符串
console.log(cat[p]); //变量p所指代的值
实例:
for...in循环遍历数组
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
var arr=['html','css','javascript'];
for(p in arr)
{
console.log(p);
console.log(arr[p]);
}
</script>
</body>
</html>
结果:

for..in循环遍历对象
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
var person={};
person.name='summer';
person.sex='girl';
person.age='18';
for(p in person)
{
console.log(p);
console.log(person[p]);
console.log(person['p']);
console.log(person.p);
}
</script>
</body>
</html>
结果:

console.log(p);获取的是person对象中的每一个属性
console.log(person[p]);获取的是person对象中属性所对应的属性值
第三~四章
函数
一次封装(定义),四处使用(调用)
命名函数 有名字的函数
匿名函数 没有名字的函数:
作为数据值使用


作为参数
延时函数


一秒后打印出10。
作为返回值
函数定义
-
function声明
-
var赋值表达式
var add = function (argument){ //body } add(); var add = function fn(argument){ //body fn();//在函数体内调用 } add(); -
构造函数
一个函数可以作为构造函数使用,并且可以使用构造函数来创建新的对象.这使Javascript更加面向对象. 使用构造函数的优势是可以创建很多预定义对象和方法.
var add = new Function('num1','num2','return num1+num2;');
add();
注意:
构造函数用于创建一类对象,首字母要大写。
要使用 new 关键字来创建新的函数对像!!!
函数定义的位置
1.全局作用域
全局变量
在任何地方都可以访问到的变量是全局变量,对应全局作用域
2.函数作用域
局部变量
只在固定的代码片段内可访问到的变量,例如函数内部。对应局部作用域 (函数作用域)
代码中有函数,这个函数就构成一个作用域。如果函数中还有函数,那么在这个作用域中就又可以构成一个作用域。
将所有的作用域列出来形成作用域链: 函数内指向函数外的链式结构。
代码在运行时,先在函数内部找变量,找不到再去函数外找


3. if/for

如果条件为真:
add=function(argument){
}
subtract=undefined;
4.对象中的函数定义
对象+函数名来调用
比如:
var person={
name:'xm',
setSex:function(sex){
this.sex=sex; //this指代person,相当于person.sex
}
}
//添加函数
person.setName=function(name){
this.name=name;
}
//调用
person.setSex();
不能用setSex();掉用
1.函数中的this :指向window
2.方法中的this : 指向方法所属的对象
3.构造函数中的this : 指向构造函数创建的对象