Javascript 如何使变量在类的方法中可用?
我为这个问题道歉,我刚刚开始学习Javascript 我有两种方法:Javascript 如何使变量在类的方法中可用?,javascript,Javascript,我为这个问题道歉,我刚刚开始学习Javascript 我有两种方法: Manager.prototype.filters = function () { var user = []; ... Manager.prototype.filters_main = function () { var user = []; ... 我需要使属性“user”可用于2个方法(filters,filters\u main)。这样
Manager.prototype.filters = function () {
var user = [];
...
Manager.prototype.filters_main = function () {
var user = [];
...
我需要使属性“user”可用于2个方法(filters,filters\u main)。这样他们就可以使用共享变量(user)。
如何编写?在
管理器中定义变量
定义:
function Manager() {
this.user = [];
}
现在,您应该能够在过滤器功能中使用它:
Manager.prototype.filters = function() {
// Use it:
if (this.user.indexOf(...) != -1) {
...
}
};
然后,您可以继续正常操作:
var manager = new Manager();
manager.user = ["user1", "user2"];
var filters = manager.filters();
将其添加到正文中:
function Manager() {
this.user = [];
}
Manager.prototype.filters = function () {
alert(this.user)
}
var m = new Manager();
m.user = [11,22,33]
m.filters();
您必须理解这里基于原型的继承
var Manager = function() {
this.user = [];
}
var manager = new Manager();
这些行将定义一个Manager
构造函数并创建一个新对象。调用新管理器()
时,会发生以下情况:
{}
this
的值运行。因此,它将新对象({}
)的user
属性设置为空数组\uuu proto\uu
属性将设置为Manager.prototype的值。所以,这在您没有看到:manager.\uuuu proto\uuuu=manager.prototype
的情况下发生管理器
函数创建的每个对象都将其\uuuu proto\uuu
属性设置为同一个对象
然后,开始在原型对象上定义新方法,如过滤器函数。稍后,当您调用manager.filters()
时,它将首先为filters
函数查找自己的属性,但找不到它。那么,它会去寻找它的原型属性,在那里它会找到它<代码>管理器
随后将运行原型上定义的过滤器
函数,但将自身(管理器
)作为上下文,作为函数内部的此
因此,要在filters
函数中使用user
属性,只需执行以下操作:
Manager.prototype.filters = function () {
this.user = ...;
}
Manager.prototype.filters_main = function () {
this.user = ...;
}
您将操作在构造对象时定义的相同的user
属性。将其放在主体中:function Manager(){this.user=[];
Between Manager.prototype….?我应该在prototype中编写什么?