nodejs -- event 模块, 事件模块.
1. 注册事件 on 或者 addListener,触发事件 emit


1-1简单的使用:
var EventEmitter = require('events').EventEmitter;
var life = new EventEmitter();
//求安慰:
function water(who){
console.log('给 ' +who+ ' 倒水');
}
//具名函数
life.addListener('求安慰', water);
//匿名函数
life.addListener('求安慰', function(who){
console.log('给 ' +who+ ' 揉肩');
});
function cook(who){
console.log('给 ' +who+ ' 做饭');
}
//具名函数
life.on('求安慰', cook);
//匿名函数
life.on('求安慰', function(who){
console.log('给 ' +who+ ' 洗衣服');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....5');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....6');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....7');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....8');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....9');
});
//求溺爱
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 买包包1');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 看电影1');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 去旅游1');
});
//触发:
life.emit('求安慰', '汉子');

- 这里一共有两个事件, 求安慰, 一共有 9个动作; 求溺爱 ,一共有 3个动作
- 添加事件监听 有 addListener() 和 on() 两种方法, 这两种方法都 可以 使用 具名函数 和 匿名函数.
- emit() 触发事件, 上面 没有触发 [求溺爱]事件, 因此没有输出.
---------------------------------------
触发 [求溺爱] 事件.
//触发:
life.emit('求安慰', '汉子'); life.emit('求溺爱', '妹子');

-----------------------------------------------------------------------
1-2emit(event, 参数1, 参数2,参数3) 传递多个参数的时候:
var EventEmitter = require('events').EventEmitter;
var life = new EventEmitter();
//求安慰:
function water(who){
console.log('给 ' +who+ ' 倒水1');
}
//具名函数
life.addListener('求安慰', water);
//匿名函数
life.addListener('求安慰', function(who){
console.log('给 ' +who+ ' 揉肩2');
});
function cook(who){
console.log('给 ' +who+ ' 做饭3');
}
//具名函数
life.on('求安慰', cook);
//匿名函数
life.on('求安慰', function(who){
console.log('给 ' +who+ ' 洗衣服4');
});
life.on('求安慰', function(){
console.log('这个是 第 5个 监听器');
});
life.on('求安慰', function(address, age){
console.log('我要去' +address+ '旅游,我的年龄是' +age );
});
//触发:
life.emit('求安慰', '汉子', '北京', 26);

红色部分显然是不符合我们的要求的.
---
解决办法: 使得 36行是 3个参数, 但是 第一个参数不使用 .
var EventEmitter = require('events').EventEmitter;
var life = new EventEmitter();
//求安慰:
function water(who){
console.log('给 ' +who+ ' 倒水1');
}
//具名函数
life.addListener('求安慰', water);
//匿名函数
life.addListener('求安慰', function(who){
console.log('给 ' +who+ ' 揉肩2');
});
function cook(who){
console.log('给 ' +who+ ' 做饭3');
}
//具名函数
life.on('求安慰', cook);
//匿名函数
life.on('求安慰', function(who){
console.log('给 ' +who+ ' 洗衣服4');
});
life.on('求安慰', function(){
console.log('这个是 第 5个 监听器');
});
life.on('求安慰', function(who, address, age){
console.log('我要去' +address+ '旅游,我的年龄是' +age );
});
//触发:
life.emit('求安慰', '汉子', '北京', 26);

1-3:如何判断 事件有没有注册 监听器?

var EventEmitter = require('events').EventEmitter;
var life = new EventEmitter();
//求安慰:
function water(who){
console.log('给 ' +who+ ' 倒水1');
}
//具名函数
life.addListener('求安慰', water);
//匿名函数
life.addListener('求安慰', function(who){
console.log('给 ' +who+ ' 揉肩2');
});
function cook(who){
console.log('给 ' +who+ ' 做饭3');
}
//具名函数
life.on('求安慰', cook);
//匿名函数
life.on('求安慰', function(who){
console.log('给 ' +who+ ' 洗衣服4');
});
life.on('求安慰', function(){
console.log('这个是 第 5个 监听器');
});
life.on('求安慰', function(who, address, age){
console.log('我要去' +address+ '旅游,我的年龄是' +age );
});
//触发:
var anwei = life.emit('求安慰', '汉子', '北京', 26);
var niai = life.emit('求溺爱');
console.log(anwei);
console.log(niai);

可见 , [求安慰] 事件 注册了 监听器, [求溺爱]事件 没有注册 监听器.
2. 设置事件 可以拥有的监听器数量.setMaxListeners(n)
默认是10个:

var EventEmitter = require('events').EventEmitter;
var life = new EventEmitter();
//求安慰:
function water(who){
console.log('给 ' +who+ ' 倒水');
}
//具名函数
life.addListener('求安慰', water);
//匿名函数
life.addListener('求安慰', function(who){
console.log('给 ' +who+ ' 揉肩');
});
function cook(who){
console.log('给 ' +who+ ' 做饭');
}
//具名函数
life.on('求安慰', cook);
//匿名函数
life.on('求安慰', function(who){
console.log('给 ' +who+ ' 洗衣服');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....5');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....6');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....7');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....8');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....9');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....10');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....11');
});
//求溺爱
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 买包包1');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 看电影1');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 去旅游1');
});
//触发:
life.emit('求安慰', '汉子');
life.emit('求溺爱', '妹子');

--------------------------------------
增加 事件 的 最大监听器数量为 11.
var EventEmitter = require('events').EventEmitter;
var life = new EventEmitter();
// 设置事件 允许 的 最多 监听器 的数量
life.setMaxListeners(11);
//求安慰:
function water(who){
console.log('给 ' +who+ ' 倒水');
}
//具名函数
life.addListener('求安慰', water);
//匿名函数
life.addListener('求安慰', function(who){
console.log('给 ' +who+ ' 揉肩');
});
function cook(who){
console.log('给 ' +who+ ' 做饭');
}
//具名函数
life.on('求安慰', cook);
//匿名函数
life.on('求安慰', function(who){
console.log('给 ' +who+ ' 洗衣服');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....5');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....6');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....7');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....8');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....9');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....10');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....11');
});
//求溺爱
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 买包包1');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 看电影2');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 去旅游3');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....4');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....5');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....6');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....7');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....8');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....9');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....10');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....11');
});
//触发:
life.emit('求安慰', '汉子');
life.emit('求溺爱', '妹子');

注意:
- life.setMaxListeners(11); 在添加事件之前 设置 允许 的 事件 监听器 数量是 11个.
- 添加的事件监听器 数量 是 针对 所有的事件 生效的; 本 脚本内, 有两个事件, [求安慰] [求溺爱] 都 有了 11个 监听器.
3. 移除单个: 移除某个事件 的 某一个监听器. removeListener(event, listener)

var EventEmitter = require('events').EventEmitter;
var life = new EventEmitter();
// 设置事件 允许 的 最多 监听器 的数量
life.setMaxListeners(11);
//求安慰:
function water(who){
console.log('给 ' +who+ ' 倒水');
}
//具名函数
life.addListener('求安慰', water);
//匿名函数
life.addListener('求安慰', function(who){
console.log('给 ' +who+ ' 揉肩');
});
function cook(who){
console.log('给 ' +who+ ' 做饭');
}
//具名函数
life.on('求安慰', cook);
//匿名函数
life.on('求安慰', function(who){
console.log('给 ' +who+ ' 洗衣服');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....5');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....6');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....7');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....8');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....9');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....10');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....11');
});
//求溺爱
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 买包包1');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 看电影2');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 去旅游3');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....4');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....5');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....6');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....7');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....8');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....9');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....10');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....11');
});
life.removeListener('求安慰', water);
//触发:
life.emit('求安慰', '汉子');
life.emit('求溺爱', '妹子');

注意:
- 上面移除了 water 对应的 [倒水]事件.
- 这个函数只能移除 单个事件的 某个监听器
- 不可以移除 所有的事件 的 监听器
- 不可以移除 单个事件的 所有监听器, removeListen('求安慰') , 这种用法 会 报错
- 这个函数 只能 移除 具名函数 对应 的监听器 ; 匿名函数 注册的监听器 无法移除.
4. 判断 事件拥有的 监听器 的数量 listeners(event) , listenerCount(emitter, event)


var EventEmitter = require('events').EventEmitter;
var life = new EventEmitter();
// 设置事件 允许 的 最多 监听器 的数量
life.setMaxListeners(11);
//求安慰:
function water(who){
console.log('给 ' +who+ ' 倒水');
}
//具名函数
life.addListener('求安慰', water);
//匿名函数
life.addListener('求安慰', function(who){
console.log('给 ' +who+ ' 揉肩');
});
function cook(who){
console.log('给 ' +who+ ' 做饭');
}
//具名函数
life.on('求安慰', cook);
//匿名函数
life.on('求安慰', function(who){
console.log('给 ' +who+ ' 洗衣服');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....5');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....6');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....7');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....8');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....9');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....10');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....11');
});
//求溺爱
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 买包包1');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 看电影2');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 去旅游3');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....4');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....5');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....6');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....7');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....8');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....9');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....10');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....11');
});
console.log('移除前:');
console.log(life.listeners().length);
console.log(life.listeners('求安慰').length);
console.log(EventEmitter.listenerCount(life, '求安慰'));
life.removeListener('求安慰', water);
console.log('移除后:');
console.log(life.listeners().length);
console.log(life.listeners('求安慰').length);
console.log(EventEmitter.listenerCount(life, '求安慰'));
//触发:
// life.emit('求安慰', '汉子');
// life.emit('求溺爱', '妹子');

注意:
- EventEmitter类的实例.listeners(事件名).length 和 EventEmitter.listenerCount(实例名, 事件名) 都可以获得 对应的实例中 的 对应 的事件 绑定 的监听器数量
- EventEmitter类的实例.listeners().length , 如果没有传递 事件名 , 数量就是0 ; 可见 必须传递事件名
- 移除water之前 , [求安慰] 的监听器 是 11个 , 移除water之后, [求安慰] 的监听器 数量 是 10个.
5. 批量移除 某个实例中的事件绑定 的 监听器 : removeAllListeners([event])

5-1: 批量移除 某个实例 中的 某个事件 的所有 监听器:
var EventEmitter = require('events').EventEmitter;
var life = new EventEmitter();
// 设置事件 允许 的 最多 监听器 的数量
life.setMaxListeners(11);
//求安慰:
function water(who){
console.log('给 ' +who+ ' 倒水');
}
//具名函数
life.addListener('求安慰', water);
//匿名函数
life.addListener('求安慰', function(who){
console.log('给 ' +who+ ' 揉肩');
});
function cook(who){
console.log('给 ' +who+ ' 做饭');
}
//具名函数
life.on('求安慰', cook);
//匿名函数
life.on('求安慰', function(who){
console.log('给 ' +who+ ' 洗衣服');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....5');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....6');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....7');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....8');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....9');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....10');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....11');
});
//求溺爱
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 买包包1');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 看电影2');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 去旅游3');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....4');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....5');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....6');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....7');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....8');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....9');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....10');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....11');
});
life.removeAllListeners('求安慰');
//触发:
var anwei = life.emit('求安慰', '汉子');
var niai = life.emit('求溺爱', '妹子');
console.log(anwei);
console.log(niai);

可见 [求安慰] 没有注册事件.
5-2: 批量移除 某个实例 中 的所有事件 的 监听器:
var EventEmitter = require('events').EventEmitter;
var life = new EventEmitter();
// 设置事件 允许 的 最多 监听器 的数量
life.setMaxListeners(11);
//求安慰:
function water(who){
console.log('给 ' +who+ ' 倒水');
}
//具名函数
life.addListener('求安慰', water);
//匿名函数
life.addListener('求安慰', function(who){
console.log('给 ' +who+ ' 揉肩');
});
function cook(who){
console.log('给 ' +who+ ' 做饭');
}
//具名函数
life.on('求安慰', cook);
//匿名函数
life.on('求安慰', function(who){
console.log('给 ' +who+ ' 洗衣服');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....5');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....6');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....7');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....8');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....9');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....10');
});
life.on('求安慰', function(who){
console.log('给 ' +who+ ' .....11');
});
//求溺爱
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 买包包1');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 看电影2');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' 去旅游3');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....4');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....5');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....6');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....7');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....8');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....9');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....10');
});
life.on('求溺爱', function(who){
console.log('给 ' +who+ ' .....11');
});
// life.removeAllListeners('求安慰');
life.removeAllListeners();
//触发:
var anwei = life.emit('求安慰', '汉子');
var niai = life.emit('求溺爱', '妹子');
console.log(anwei);
console.log(niai);

可见 , [求安慰],[求溺爱] 都没有 监听器.
参考链接:
nodejs -- event 模块, 事件模块.的更多相关文章
- nodeJS学习(10) --- 事件模块
转载:http://www.cnblogs.com/zhongweiv/p/nodejs_events.html 目录 简介及资料 事件常用函数及使用 emitter.on(event, listen ...
- 自己实现一个javascript事件模块
nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...
- 深入理解nodejs的异步IO与事件模块机制
node为什么要使用异步I/O 异步I/O的技术方案:轮询技术 node的异步I/O nodejs事件环 一.node为什么要使用异步I/O 异步最先诞生于操作系统的底层,在底层系统中,异步通过信号量 ...
- nodejs事件模块
nodejs 事件模块 events 只有一个对象 EventEmitter . var EventEmitter = require('events').EventEmitter;var life ...
- jquery源码分析(七)——事件模块 event(二)
上一章节探讨了事件的一些概念,接下来看下jQuery的事件模块. jQuery对事件的绑定分别有几个API:.bind()/.live()/.delegate()/.on()/click(), 不管是 ...
- Node.js:events事件模块
Nodejs的大部分核心API都是基于异步事件驱动设计的,所有可以分发事件的对象都是EventEmitter类的实例. 大家知道,由于nodejs是单线程运行的,所以nodejs需要借助事件轮询,不断 ...
- jQuery源代码学习之九—jQuery事件模块
jQuery事件系统并没有将事件坚挺函数直接绑定在DOM元素上,而是基于事件缓存模块来管理监听函数的. 二.jQuery事件模块的代码结构 //定义了一些正则 // // //jQuery事件对象 j ...
- Backbone事件模块源码分析
事件模块Backbone.Events在Backbone中占有十分重要的位置,其他模块Model,Collection,View所有事件模块都依赖它.通过继承Events的方法来实现事件的管理,可以说 ...
- nginx事件模块分析(一)
nginx ngx_events_module模块分析 ngx_events_module模块是核心模块之一,它是其它所有事件模块的代理模块.nginx在启动时只与events模块打交道,而由even ...
随机推荐
- 安装OpenResty开发环境
OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高的动态 Web ...
- Java复制目录/子目录/文件
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...
- flask 定义数据关系(多对一)
多对一 一对多关系反过来就是多对一关系,这两种关系模式分别从不同的视角出发.一个作者拥有多篇文章,反过来就是多篇文章属于同一个作者.为了便于区分,我们使用居民和城市来演示多对一关系:多个居民住在同一个 ...
- 利用“Java同包同名类执行顺序”取消Java 网站应用程序Licence验证
如果是在tomcat里运行,lib目录下一大堆的JAR包,不同的JAR包里可能会有相同的包名类名,JRE按照JAR名字的字母顺序加载JAR文件,同名类如果已加载,则后面的同名类会忽略. 公司购买的一款 ...
- Python 进程间数据交互
进程间通信:进程之间必须需要中间件. 不同进程间内存是不共享的,要想实现两个进程间的数据交换 Queues:实现传输两个进程的数据 线程queue,访问数据只能在一个进程内进行线程与线程之间的 ...
- 【题解】Luogu P2057 [SHOI2007]善意的投票
原题传送门 我们一眼就能看出这是一道最小割的题 我们设不睡觉这种状态为S,睡觉这种状态为T 对于每个人,如果不想睡觉,就从S向这个人连流量为1的边,否则,就从这个人向T连流量为1的边 对于每一对朋友, ...
- 【Alpha】Scrum Meeting 3
目录 简介: 工作内容: 工作修改: 燃尽图: 难点: 后期任务: 签入记录 团队讨论照片: 简介: 地点:J1-316 时间:4月3日星期四,晚上七点 会议目的:讨论大家此次的分工 工作内容: 陈治 ...
- 一、restful规范 二、CBV(View)源代码执行流程 三、drf框架安装和简单使用
一.restful规范 ''' 它是一个规范,面向资源架构 十条规范 1.API与用户的通讯协议,总是使用HTTPs协议,确保了网络传输的安全性 2.域名 --https://api.example. ...
- Java基础学习-注释的概述和分类
/* 注释:用于解释说明程序的文字 分类: 单行:// 多行:/**/ 作用:解释说明程序,提高程序的阅读性 */ ...
- Learning-Python【11】:函数嵌套及作用域
一.函数对象 函数是第一类对象:函数的内存地址(即函数名)可以像一个变量值一样去使用 1.变量值可以被引用,例如 x = 1,y = x def foo(): print('from foo') f ...