//给原型添加一个method方法 Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; }
//用method方法来创建一个访问父类的方法 Object.method(‘superior’ , function(name){ var that = this, method = that[name]; return function() { return method.apply(that, arguments); }; });
//调用 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();
按道理说没错吧。。我在看JS good parts 那本书的时候按书上敲的, 总是报一个undefined的错误。。apply的方法是原型自带的吧orz
关键是你的cat(spec)返回的是undefined嘛
@TimothyJin 我的cat是写了的啊 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();
};
};
不知道这里面的this,是否真按照你设想工作了?
@qimenxiaozi 我知道你说的什么意思,this有时候会因为疏忽绑定在全局上,我检查过了,该用that替代的地方都用了
你的Cat函数返回值就是undefined