Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么是「;扩展;蜘蛛中的关键词?_Javascript_Oop_Prototype_Keyword_Spiderlang - Fatal编程技术网

Javascript 什么是「;扩展;蜘蛛中的关键词?

Javascript 什么是「;扩展;蜘蛛中的关键词?,javascript,oop,prototype,keyword,spiderlang,Javascript,Oop,Prototype,Keyword,Spiderlang,通过添加两个关键字来支持JavaScript原型OOP:extends和super 它们是什么 他们解决了什么问题 什么时候合适,什么时候不合适 extends关键字允许您继承现有对象。例如,假设您有一个动物对象: fn Animal(name) { this.name = name; this.walk = fn() { console.log('\(name) is walking...'); }; } Animal.prototype.getLegs = fn()

通过添加两个关键字来支持JavaScript原型OOP:
extends
super

  • 它们是什么
  • 他们解决了什么问题
  • 什么时候合适,什么时候不合适

extends关键字允许您继承现有对象。例如,假设您有一个
动物
对象:

fn Animal(name) {
  this.name = name;

  this.walk = fn() {
    console.log('\(name) is walking...');
  };
}

Animal.prototype.getLegs = fn() {
  return 4;
};
现在,您可以使用extends关键字创建另一个继承
动物的对象:

fn Spider(name)
  extends Animal(name) {

}

Spider.prototype.getLegs = fn() {
  return 8;
};
创建新的
Spider
对象时,将自动使用
walk
方法,因为
Spider
扩展了
Animal

var spider = new Spider("Skitter the Spider");
spider.walk();
Spider(语言)还提供了
super
关键字,允许您轻松访问正在扩展的对象。例如:

Spider.prototype.getLegs = fn() {
  return super.getLegs() + 4; 
};

spider.getLegs(); // => 8

实施 Spider中的此代码:

fn Spider() extends Animal {}
编译为以下JavaScript:

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

Spider.prototype = Object.create(Animal);

我不知道具体什么是Spider实现,但这里是cofeescript实现,如果这有帮助的话: