Html—JavaScript(二)

JavaScript(二)

1.函数

函数,即⽅法。就是⼀段预先设置的功能代码块,可以反复调⽤,根据输⼊参数的不同,返回不同的值。函数也是对象。

1.1定义

有三种函数定义的⽅式:函数声明语句、函数定义表达式、Function构造函数

函数声明语句

function 函数名([参数列表]){
}

function fn(){
	console.log("hahaha");
}
fn();

此种方式声明可以变量提升

//变量提升
fn();
function fn(){
	console.log("hahaha");
}

函数定义表达式

此种方式定义函数可以省略函数名称
var 变量名 = function ([参数列表]) {
 
}

var fun = function(){
 console.log("Hello,boy!");
}
fun();

Function构造函数

Function构造函数接收任意数量的参数,但最后⼀个参数始终都被看成是函数体,⽽前⾯的参数则为新函数的参数。

var add = new Function('x','y','return (x + y)');
// 等同于
function add(x, y) {
 return (x + y);
}
add();

注意:
1.js中的函数没有重载,同名的函数,会被后⾯的函数覆盖。
2.js中允许有不定数⽬的参数

1.2参数

函数运⾏的时候,有时需要提供外部数据,不同的外部数据会得到不同的结果,这种外部数据就叫参数,定义时的参数称为形参,调⽤时的参数称为实参

  • 实参可以省略,那么对应形参为undefined
  • 若函数形参同名(⼀般不会这么⼲):在使⽤时以最后⼀个值为准。
  • 可以给参数默认值:当参数为特殊值时,可以赋予默认值。
  • 参数为值传递,传递副本 ;引⽤传递时传递地址,操作的是同⼀个对象。
// 调⽤函数时,实参可以省略,则对应形参为undefined
function add(a , b) {
 console.log(a + "+" + b + "=" + (a + b));
}
add(1);//1+undefined=NaN
add();//undefined+undefined=NaN

// 若函数形参同名(⼀般不会这么⼲):在使⽤时以最后⼀个值为准
function add2(a , a) {
 console.log(a);
}
add2(1,2);

// 给参数默认值
function defaultValue(a){
 	a = a || "a";
 	return a; 
}
console.log(defaultValue());
function f(a){
 //若参数a不为undefined或null,则取本身的值,否则给⼀个默认值
 (a !== undefined && a !== null) ? a = a : a = 1;
 return a; 
}
console.log(f());

// 值传递
var num = 12;
function change(n) {
 	n = 30; 
 }
change(num);
console.log(num);//12
// 引⽤传递
var obj = {name: "tom"};
function paramter(o) {
 	o.name = 2; 
}
paramter(obj);
console.log(obj.name);//2

1.3函数调用

1.常用调用方式

函数名([实参]);

2. 调用模式

function add(a,b){
 	return a+b; 
}
var sum = add(1,2)
console.log(sum);//3

3. ⽅法调⽤模式

var o = {
 	m: function(){
 		console.log(1);
 	}
};
o.m();

2.对象的创建

2.1 字⾯量形式创建

var 对象名 = {};//创建⼀个空的对象
var 对象名 = {键:值,键2:值2,...}
var obj = {
 	'name' : 'hello',
 	age : 12,
 	sayHello : function () {
 		console.log("我是对象中的⽅法");
 	},
 	courses : {
 		javase : 4,
 		javascript : 3
 	},
 	isLike : true,
 	members : [
 		{name : "⼩红",age : 20},
 		{name : "⼩绿",age : 22},
 		{name : "⼩蓝",age : 27},
 		{name : "⼩⻩"}
 	]
};

2.2通过new Object创建

var 对象名 = new Object(); // 创建⼀个空的对象

var obj = new Object();
obj.name = 'zs';
obj.age = 18;
console.log(obj);

2.3通过Object对象的create⽅法创建

var 对象名 = Object.create(null);
var obj = Object.create(null);
obj.name = 'ls';
obj.gender = true
console.log(obj);
 
var objn = Object.create(obj);
objn.age = 18;
console.log(objn);
console.log(objn.gender)

3.对象的序列化和反序列化

序列化即将JS对象序列化为字符串,反序列化即将字符串反序列化为JS对象。JS中通过调⽤JSON⽅法,可以将对象序列化成字符串,也可以将字符串反序列化成对象 。

// 序列化对象,将对象转为字符串
JSON.stringify(object);

// 反序列化,将⼀个Json字符串转换为对象。
JSON.parse(jsonStr);

4.this

this是JavaScript语⾔的⼀个关键字。
它代表函数运⾏时,⾃动⽣成的⼀个内部对象,只能在函数内部使⽤。
随着函数使⽤场合的不同,this的值会发⽣变化。但是有⼀个总的原则,那就是this指的是调⽤函数的那个对象。

// 在函数中使⽤this
function test () {
 	this.x = 1;
 	console.log(this.x);
}
test();
console.log(x); // 相当于定义在全局对象上的属性

//在对象中使⽤this
var obj = {
 	name : '张三',
 	age : 20,
 	sayHello : function () {
 		console.log(this.name)
 		console.log(this)
 	} 
}
obj.sayHello();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值