语言精粹【摘要】

本文通过一个具体的JavaScript代码示例,深入浅出地讲解了如何实现面向对象编程中的继承和方法扩展,以及如何创建特定类如哺乳动物、猫和酷猫等。详细介绍了对象的属性和方法的定义,以及如何利用superior方法来调用父类方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

if (typeof Object.beget !== 'function') {

Object.beget = function (o) {
var F = function () {};
F.prototype = o;
return new F();
};
}
var another_stooge = Object.beget(stooge);

 

Function.prototype.method = function (name, func) {
if (!this.prototype[name]) {
this.prototype[name] = func;
}
};

Object.method('superior', function (name) {
var that = this,
method = that[name];
return function ( ) {
return method.apply(that, arguments);
};
});

var mammal = function (spec) {
var that = {};

that.get_name = function ( ) {
return spec.name;
};

that.says = function ( ) {
return spec.saying || '';
};

return that;
};

var myMammal = mammal({name: 'Herb'});

var cat = function (spec) {
spec.saying = spec.saying || 'meow';
var that = mammal(spec);
that.purr = function (n) {
var i, s = '';
for (i = 0; i < n; i += 1) {
if (s) {
s += '-';
}
s += 'r';
}
return s;
};
that.get_name = function ( ) {
return that.says( ) + ' ' + spec.name +
' ' + that.says( );
}
return that;
};
var myCat = cat({name: 'Henrietta'});
var coolcat = function (spec) {
var that = cat(spec),
super_get_name = that.superior('get_name');
that.get_name = function (n) {
return 'like ' + super_get_name( ) + ' baby';
};
return that;
};

var myCoolCat = coolcat({name: 'Bix'});
var name = myCoolCat.get_name( );
// 'like meow Bix meow baby'

 

转载于:https://www.cnblogs.com/dingyuanxin/p/4064991.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值