require
Node会假定这个目录是个模块包,并尝试在这个目录下搜索包定义文件package.json。
如果没找到,Node会假设包的入口点是index.js文件(译者注:除了index.js还会查找index.node,.node文件是Node的二进制扩展包,具体见官方文档),以上面代码为例,Node会尝试查找./myModuleDir/index.js文件。
反之,如果找到了package.json文件,Node会尝试解析它,并查找包定义里的main属性,然后把main属性的值当作入口点的相对路径。
exports.name=function(){} ; 这个代表为该module设定了名为name的方法。实际上呢,exports是把获取到的所有对象(方法,变量各种)赋值给Modules.exports,如果Modules.exports之前没有特定地指向某个对象,辣么,它就会直接代表加到exports上面的对象啦。如果提前有给Modules.exports指定对象过,那后期的exports是并不会生效的。
分号可以有可以木有啊,为神马这么不规范,额
类或者方法有get和set访问器,比如类class ABC{ get name(){ return ‘abc';}
prototype指JavaScript中对象的显示原型。在 JavaScript 原型继承结构里面,规范中用 [[Prototype]] 表示对象隐式的原型,在 JavaScript 中用 __proto__ 表示,并且在 Firefox 和 Chrome 浏览器中是可以访问得到这个属性的,但是 IE 下不行。所有 JavaScript 对象都有 __proto__ 属性,但只有 Object.prototype.__proto__ 为 null,前提是没有在 Firefox 或者 Chrome 下修改过这个属性。这个属性指向它的原型对象。 至于显示的原型,在 JavaScript 里用 prototype 属性表示
EventEmitter是nodejs核心的一部分。很多nodejs对象继承自EventEmitter,用来监听处理事件,及回调。emit用于发射事件(dispatch么?)
instanceof 运算符与 typeof 运算符相似,用于识别正在处理的对象的类型。与 typeof 方法不同的是,instanceof 方法要求开发者明确地确认对象为某特定类型。
function instance_of(L, R) {
//L 表示左表达式,R 表示右表达式
var O = R.prototype;
// 取 R 的显示原型
L = L.__proto__;
// 取 L 的隐式原型
while (true) {
if (L === null)
return false;
if (O === L)
// 这里重点:当 O 严格等于 L 时,返回 true
return true;
L = L.__proto__;
}
}
JavaScript中可能出现由一个文件名链接到某个目录的情况(需要在代码中处理)为什么要这样弄啊???
Symbol可以作为属性或方法,唯一且不可修改
js的函数调用会免费奉送两个参数就是 this 和 arguments 。arguments是参数组,它并不是一个真实的数组,但是可以使用.length方法获得长度。
var $name 是声明一个Jquery对象
一个js文件中,由多个[number:function],分开的是什么??不同功能函数块么??