Javascript 向函数中添加原型意味着什么?

Javascript 向函数中添加原型意味着什么?,javascript,Javascript,鉴于: 有人能给我解释一下这是什么意思吗。这可以在没有.prototype的情况下在一个函数中完成吗 var x = function () { }; x.prototype = { abc: 25 }; 原型是类模型在JavaScript中的工作方式-您已经创建了一个类x,它有一个属性abc,默认为25: var x = function () { // something here ? }; 函数x是类构造函数,在创建该类的新实例时调用该函数,并可以对其进行初始化。这当然意味着

鉴于:

有人能给我解释一下这是什么意思吗。这可以在没有.prototype的情况下在一个函数中完成吗

var x = function () {

};  
x.prototype = { abc: 25 };

原型是类模型在JavaScript中的工作方式-您已经创建了一个类
x
,它有一个属性
abc
,默认为
25

var x = function () {
  // something here ?
};
函数
x
是类构造函数,在创建该类的新实例时调用该函数,并可以对其进行初始化。这当然意味着您可以在那里设置
abc
属性:

var obj = new x();
alert(obj.abc);   // 25
然而,这被认为是效率较低的方法:

  • 您必须操作创建的每个对象,而不是一次性地在原型上设置属性
  • 属性存储在每个对象上,每次都会消耗内存,而不是在原型上存储一次
ECMAScript Harmony有一个用于定义类和原型的工具,但这一工具尚未在任何浏览器中实现:

var x = function()
{
  this.abc = 25;
};
var obj = new x();
alert(obj.abc);   // 25

这相当于您定义原型的代码,只是对相关操作进行了更好的分组。

所以在定义函数时,我无法做到这一点?我以后需要添加一个原型?是的。不过我不会把x称为一门课:它是一门课constructor@SamanthaJ我更新了我的答案。不,您不能同时定义构造函数和原型,尽管计划中有更好的语法。是的,您可以在构造函数中定义属性,但这种方法有缺点。下面应该解释很多:prototype可以节省内存和CPU,并使您能够使用可识别的OO模式。您可以在构造函数中执行
this.abc=25
,这大致相同。
class x {
  constructor() {
    ...
  }

  public abc = 25;
}