node.js  中 util.inherits

util.inherits(constructor, superConstructor) 是一个实现对象间原型继承的函数。 JavaScript的面向对象特性是基于原型的,与常见的基于类的不同。JavaScript没有提供对象集成的语言级别特性,而是通过原型复制来实现的,在此介绍unitl.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 实现继承。运行结果如下:
bash-3.2$ node util_inherits.js 
base
Hellobase
{ name: 'base', base: 1991, sayHello: [Function] }
sub
{ name: 'sub' }

注意,Sub仅仅继承了Base在原型中定义的函数,而构造函数内部创造的base属性和sayHello函数都没有被Sub继承。同时,在原型中
定义的属性不会被console.log作为对象的属性输出。如果我们去掉objSub.sayHello();这行注释,运行结果如下:
bash-3.2$ node util_inherits.js 
base
Hellobase
{ name: 'base', base: 1991, sayHello: [Function] }
sub

/Users/bruce/Documents/test/nodejs/util_inherits.js:27
objSub.sayHello();
       ^
TypeError: Object #<Sub> has no method 'sayHello'
    at Object.<anonymous> (/Users/bruce/Documents/test/nodejs/util_inherits.js:27:8)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:906:3


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值