当前阅读教程:Node.js在线教程 > util.inherits | |
阅读(22555525) 收藏 赞(5685) 分享 | |
上一篇: util.callbackify | 下一篇: util.inspect |
util.inherits(constructor, superConstructor) 是一个实现对象间原型继承的函数。 JavaScript 的面向对象特性是基于原型的,与常见的基于类的不同。JavaScript 没有提供对象继承的语言级别特性,而是通过原型复制来实现的。 在这里我们只介绍 util.inherits 的用法,示例 如下: var util = require('util'); function Base() { this.name = 'base'; this.base = 1991; this.sayHello = function() { console.log('Hello ' + this.name); }; } Base.prototype.showName = function() { console.log(this.name); }; function Sub() { this.name = 'sub'; } util.inherits(Sub, Base); var objBase = new Base(); objBase.showName(); objBase.sayHello(); console.log(objBase); var objSub = new Sub(); objSub.showName(); //objSub.sayHello(); console.log(objSub); 我们定义了一个基础对象 Base 和一个继承自 Base 的 Sub,Base 有三个在构造函数内定义的属性和一个原型中定义的函数,通过util.inherits 实现继承。运行结果如下: D: ode>node util02.js base Hello base Base { name: 'base', base: 1991, sayHello: [Function] } sub Sub { name: 'sub' } 注意:Sub 仅仅继承了Base 在原型中定义的函数,而构造函数内部创造的 base 属 性和 sayHello 函数都没有被 Sub 继承。 同时,在原型中定义的属性不会被 console.log 作 为对象的属性输出。如果我们去掉 objSub.sayHello(); 这行的注释,将会看到: D: odeutil02.js:22 objSub.sayHello(); ^ TypeError: objSub.sayHello is not a function at Object.<anonymous> (D: odeutil02.js:22:8) ?[90m at Module._compile (internal/modules/cjs/loader.js:1158:30)?[39m ?[90m at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)?[39m ?[90m at Module.load (internal/modules/cjs/loader.js:1002:32)?[39m ?[90m at Function.Module._load (internal/modules/cjs/loader.js:901:14)?[39m ?[90m at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)?[39m ?[90m at internal/main/run_main_module.js:18:47?[39m
|
|
上一篇: util.callbackify | 下一篇: util.inspect |