【发布时间】:2013-08-31 22:12:18
【问题描述】:
虽然我有一些使用 jQuery 和 JavaScript 的工作经验,但我仍然觉得很难理解原型继承。因此,我开始阅读 Stoyan Stefanov 的《面向对象的 JavaScript》一书。但是,我在解决书中的以下练习时遇到了问题:
- 创建一个名为
shape的对象,该对象具有type属性和getType方法。 - 定义一个原型为shape的
Triangle构造函数。使用Triangle创建的对象应具有三个自己的属性:a、b和c,代表三角形的边。 - 向原型添加一个名为
getPerimeter的新方法。
使用此代码测试您的实现:
var t = new Triangle(1, 2, 3);
t.constructor; // Triangle(a, b, c)
shape.isPrototypeOf(t); // true
t.getPerimeter(); // 6
t.getType(); // "triangle"
我已尝试使用以下代码解决此问题:
shape = {
type : "",
getType: function(){
return this.type;
}
};
function Triangle(a, b, c) {
}
Triangle.prototype = shape;
但是它似乎没有按预期工作。你将如何解决这个问题?请详细说明。我真的很想了解原型继承。
【问题讨论】:
-
为什么你的代码里有一堆...?
-
我直接从pdf中复制粘贴了
标签: javascript prototype