存储类的值的Javascript

存储类的值的Javascript,javascript,Javascript,当我们这样做的时候 const something = class extends anything { } 它是什么意思,或者它有什么作用?它是否将类的值存储在变量中?这与我们的计划有什么不同 class something extends anything { } javascript中没有类这样的东西,就像它们存在于基于类的语言(如Java)中一样。在JS中,类语法是在相同的旧构造函数之上的。当你明白了这一点,你的问题就更容易推理了 这: 与此大致类似: const somethin

当我们这样做的时候

const something = class extends anything {
} 
它是什么意思,或者它有什么作用?它是否将类的值存储在变量中?这与我们的计划有什么不同

class something extends anything {
}

javascript中没有类这样的东西,就像它们存在于基于类的语言(如Java)中一样。在JS中,类语法是在相同的旧构造函数之上的。当你明白了这一点,你的问题就更容易推理了

这:

与此大致类似:

const something = function() {
}
something.prototype = Object.create(anything.prototype)
这些变体也有同样的相似之处:

class something extends anything {
}

function something() {
}
something.prototype = Object.create(anything.prototype)
函数是javascript中的第一类对象,这意味着它们可以被视为值并传递。const something=类之间的差异。。。还有一些。。。 第一个是类表达式,将类(如值)分配给可以传递的变量;第二个是类声明,声明类并为其命名,但不将其分配给变量,但在大多数情况下它们是可互换的

为了澄清,当您执行something.prototype=Object.createanything.prototype时,这是Javascript使用的实际继承。这大体上意味着,你需要一个构造函数的原型,并将其作为下一个构造函数的基础,这意味着你使用新的东西创建的任何对象都将拥有任何东西的原型,以及你需要添加到某物中的任何其他属性


您可以在这里获得更深入的信息:而且在javascript中没有类这样的东西,就像它们存在于基于类的语言(如Java)中一样。在JS中,类语法是在相同的旧构造函数之上的。当你明白了这一点,你的问题就更容易推理了

这:

与此大致类似:

const something = function() {
}
something.prototype = Object.create(anything.prototype)
这些变体也有同样的相似之处:

class something extends anything {
}

function something() {
}
something.prototype = Object.create(anything.prototype)
函数是javascript中的第一类对象,这意味着它们可以被视为值并传递。const something=类之间的差异。。。还有一些。。。 第一个是类表达式,将类(如值)分配给可以传递的变量;第二个是类声明,声明类并为其命名,但不将其分配给变量,但在大多数情况下它们是可互换的

为了澄清,当您执行something.prototype=Object.createanything.prototype时,这是Javascript使用的实际继承。这大体上意味着,你需要一个构造函数的原型,并将其作为下一个构造函数的基础,这意味着你使用新的东西创建的任何对象都将拥有任何东西的原型,以及你需要添加到某物中的任何其他属性


您可以在这里获得更深入的信息:

只需注意,声明const something=code实际上意味着以下所有内容都是不可能的:

function something(){//code}
  var something;
  let something;
  class something{
//whatever
  }
class anything {//code
      }
class anything {//code changes previous class
      }
该特定名称是保留的,const的目的是,否则,您可以使用相同的名称重写类本身,如下所示:

 var something = class anything {//code
  }

  var something = class anything {//code changes previous class
  }
同样,这是不可能的:

class anything {//code
      }
class anything {//code changes previous class
      }

你不能改变任何事情。因此,我认为const something=class和class something extensed any之间没有实际区别,因为它们都是保留名称和其他类的版本。

请注意,声明const something=code实际上意味着以下所有内容都是不可能的:

function something(){//code}
  var something;
  let something;
  class something{
//whatever
  }
class anything {//code
      }
class anything {//code changes previous class
      }
该特定名称是保留的,const的目的是,否则,您可以使用相同的名称重写类本身,如下所示:

 var something = class anything {//code
  }

  var something = class anything {//code changes previous class
  }
同样,这是不可能的:

class anything {//code
      }
class anything {//code changes previous class
      }

你不能改变任何事情。因此,我认为const something=class和class something extensed any之间没有实际区别,因为它们都是保留名称和其他类的版本。

它存储对类的引用。这与在第二种情况下重写something值有何不同。JavaScript中的类是一级对象。没有特殊的类型定义,它们只是像普通引用一样传递。不确定,但可能有帮助。它存储对类的引用。这与在第二种情况下重写something值有何不同。JavaScript中的类是一级对象。没有特殊的类型定义,它们只是像普通引用一样传递。不确定,但可能会有帮助。为了避免es6和以前版本之间的混淆,值得一提的是:函数就像var一样被提升,类不像const和let。所以函数something{}在代码中的任何地方都是可用的,但是const something=function{},class something{}和anything const只有在执行到达它们的声明之后才可用。@SrThompson您能不能也添加这一行的含义?something.prototype=Object.createanything.prototype就像你可以在你的answer@KuchB
嗨,我希望这能让事情更清楚。也许互联网上有人能比我更好地解释它:它和普通的原型一样吗?例如Anything.prototype.something=function{//Somethinng}就在这里,我们不需要做新的事情@KuchBhi不完全是这样。Anything.prototype.something=。。。将属性某物添加到任何对象的原型中。something.prototype=Object.createanything.prototype创建一个新对象,而不是任何对象的原型的引用,并将其指定为某物的原型。您可以稍后执行某些操作。prototype.someOtherAttributeOrFunction=。。。在不影响任何东西的原型的情况下添加到某个东西的原型,只是为了避免es6和以前版本之间的混淆,值得一提的是:函数就像var一样被提升,类不像const和let。所以函数something{}在代码中的任何地方都是可用的,但是const something=function{},class something{}和anything const只有在执行到达它们的声明之后才可用。@SrThompson您能不能也添加这一行的含义?something.prototype=Object.createanything.prototype就像你可以在你的answer@KuchBhi编辑,我希望这能让它更清楚。也许互联网上有人能比我更好地解释它:它和普通的原型一样吗?例如Anything.prototype.something=function{//Somethinng}就在这里,我们不需要做新的事情@KuchBhi不完全是这样。Anything.prototype.something=。。。将属性某物添加到任何对象的原型中。something.prototype=Object.createanything.prototype创建一个新对象,而不是任何对象的原型的引用,并将其指定为某物的原型。您可以稍后执行某些操作。prototype.someOtherAttributeOrFunction=。。。并在不影响任何事物原型的情况下添加到某事物的原型中