我有这个Demo,它的执行警报很有效:

代码下方。

var Shape = function(){};
var TwoDShape = function(){};
Shape.prototype.name = 'shape';
Shape.prototype.toString = function(){return this.name;};

alert('there is alert');​


当我添加此行时:extend(TwoDShape, Shape);

我无法执行提醒,因为您可以看到Demo

在此之后,我添加以下行:

var my = new TwoDShape();
alert(my.toString());
alert(TwoDShape.prototype.name);
alert(my.hasOwnProperty('name'));


提醒shapeTwoDShape类的名称,但我无法成功显示
class.name为什么?

here is the full code:

最佳答案

首先,您的代码中没有函数extend(),因此该代码在此处遇到错误并停止运行。

因此,我使用jQuery $.extend()修复了该错误,或​​者您可以自己编写extend()(请参阅Jimmy的答案)。

其次,如果希望所有Shape / TwoDShape实例都具有可使用name访问的类toString(),则需要扩展原型:

TwoDShape.prototype = $.extend(TwoDShape.prototype, Shape.prototype);

请参阅我在扩展原型上创建的http://jsfiddle.net/4Bjjp/6/的jsfiddle

10-04 17:56