JavaScript函数深入讲解1

160 阅读3分钟

第一~二章

什么是对象

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。

作为返回值

函数定义

  1. function声明

  2. var赋值表达式

     var add = function (argument){
     		//body
     	}
     	add();
     	var add = function fn(argument){
     		//body
     		fn();//在函数体内调用
     	}
     	add();
    
  3. 构造函数

一个函数可以作为构造函数使用,并且可以使用构造函数来创建新的对象.这使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 : 指向构造函数创建的对象