[英]How can I alert name of the class Shape,TwoDShape?
我有这个演示哪个执行警报,它工作得很好:
代码下方。
var Shape = function(){};
var TwoDShape = function(){};
Shape.prototype.name = 'shape';
Shape.prototype.toString = function(){return this.name;};
alert('there is alert');
当我添加此行时: extend(TwoDShape, Shape);
我无法执行提醒,因为您可以看到演示
在此之后,我添加以下行:
var my = new TwoDShape();
alert(my.toString());
alert(TwoDShape.prototype.name);
alert(my.hasOwnProperty('name'));
提醒类shape
或TwoDShape
的名称,但我无法成功显示class.name为什么?
首先,代码中没有函数extend()
,因此代码在那里遇到错误并停止运行。
因此,我使用jQuery $.extend()
对其进行$.extend()
,或者您可以自己编写extend()
(请参阅吉米的答案)。
其次,如果希望所有Shape / TwoDShape实例都具有可使用toString()
访问的类name
,则需要扩展原型:
TwoDShape.prototype = $.extend(TwoDShape.prototype, Shape.prototype);
参见我在扩展原型上创建的jsfiddle http://jsfiddle.net/4Bjjp/6/
您的代码中断,因为extend
功能不存在。 您必须实现自己的才能使其工作。 这是一个简单的实现。
function extend(destination, source) {
for (var key in source) {
if(source.hasOwnProperty(key)) {
destination[key] = source[key];
}
}
return destination;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.