Javascript 向函数中添加原型意味着什么?
鉴于: 有人能给我解释一下这是什么意思吗。这可以在没有.prototype的情况下在一个函数中完成吗Javascript 向函数中添加原型意味着什么?,javascript,Javascript,鉴于: 有人能给我解释一下这是什么意思吗。这可以在没有.prototype的情况下在一个函数中完成吗 var x = function () { }; x.prototype = { abc: 25 }; 原型是类模型在JavaScript中的工作方式-您已经创建了一个类x,它有一个属性abc,默认为25: var x = function () { // something here ? }; 函数x是类构造函数,在创建该类的新实例时调用该函数,并可以对其进行初始化。这当然意味着
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
然而,这被认为是效率较低的方法:
- 您必须操作创建的每个对象,而不是一次性地在原型上设置属性
- 属性存储在每个对象上,每次都会消耗内存,而不是在原型上存储一次
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;
}