伪经典继承

时间:2014-07-21 16:00:19

标签: javascript inheritance

我目前正在通过Javascript工作,这是一本非常好的书,但正如标题所说,我似乎正在走向死胡同,让代码适用于章节 五。当我运行代码时,我得不到任何回报,所以我不确定它的错误就像书本一样,任何帮助都很棒。

Function.method('new',function(){
  var that  = Object.beget(this.prototype);
  var other = this.apply(that,arguments);

  return  (typeof other === 'object' && other) || that ;
});

var Mammal = function(name){
  this.name = name;
};

Mammal.prototype.get_name = function(){
  return this.name;
};

Mammal.prototype.says = function(){
  return this.saying || '';
}

var myMammal = new Mammal('Herb the mammal');

var name = myMammal.get_name();

document.writeln(name);

1 个答案:

答案 0 :(得分:0)

请参阅'扩充类型'在章节'功能' ' JavaScript - 好的部分'

请在问题中发布的代码之前添加以下代码。

这将使method上的Function功能可用。

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

请参阅此fiddle以获取完整的工作代码。

请注意new已提供Function方法。该代码显示了augment

的方法

您可以从代码中删除以下块。

Function.method('new',function(){
  var that  = Object.beget(this.prototype);
  var other = this.apply(that,arguments);

  return  (typeof other === 'object' && other) || that ;
});

但是,如果您需要保留上述内容,则必须augment method功能Function