首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript抽象类与对象创建

Javascript抽象类与对象创建
EN

Stack Overflow用户
提问于 2017-07-09 16:23:21
回答 1查看 297关注 0票数 3

这是我的Abstract类:

代码语言:javascript
复制
var Animal = function(){
    this.name = ''
    this.legs = 0;
    throw new Error("cannot instantiate abstract class");
}
Animal.prototype.walk = function(){ console.log(this.name+ " walked")};

创建新的混凝土类:

代码语言:javascript
复制
var Dog = function(){} ;

现在我想做一个具体的Dog类来继承抽象类Animal。下面两种方法我都试过了。哪一个是标准?:

代码语言:javascript
复制
Dog.prototype = Object.create(Animal.prototype)

代码语言:javascript
复制
Dog.prototype = Animal.prototype

我还尝试了var Dog = Object.create(Animal),它给了我一个错误。

EN

回答 1

Stack Overflow用户

发布于 2017-07-09 17:32:27

Animal类中,您可以让if检查当前的constructor是否为Animal,如果是,则抛出错误。当您在Dog内部调用父构造函数并从prototype继承时,您还需要将其构造函数指针设置为Dog

代码语言:javascript
复制
var Animal = function() {
  this.name = ''
  this.legs = 0;
  if (this.constructor == Animal) {
    throw new Error("cannot instantiate abstract class");
  }
}
Animal.prototype.walk = function() {
  console.log(this.name + " walked")
};

function Dog() {
  Animal.call(this);
}

Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;

var inst = new Dog;
inst.name = 'lorem';
inst.walk()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44994426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档