Javascript 我可以在具有相同名称的对象中拥有属性(字段)和方法吗?

Javascript 我可以在具有相同名称的对象中拥有属性(字段)和方法吗?,javascript,Javascript,我有一门课是这样的: let enabled=false; 班级名单{ 构造函数(…参数){ this.args=args; } 获取计数(){ 如果(已启用){ 让_this=this; return()=>\u this.args.length; } 返回this.args.length; } } let list=new list('a',true,null); //默认情况下,“计数”不是一个方法/函数 console.log(list.Count);//3. //请执行以下操作以启用

我有一门课是这样的:

let enabled=false;
班级名单{
构造函数(…参数){
this.args=args;
}
获取计数(){
如果(已启用){
让_this=this;
return()=>\u this.args.length;
}
返回this.args.length;
}
}
let list=new list('a',true,null);
//默认情况下,“计数”不是一个方法/函数
console.log(list.Count);//3.
//请执行以下操作以启用此标志:
启用=真;
//“Count”现在是一种方法

console.log(list.Count());//3
JavaScript对象中实际上没有“方法”或“属性”之类的东西。只有更符合属性的“键”。只是有些键将函数存储为其数据,一旦访问到该数据,就可以通过在键查找的结果上附加
()
来调用该数据。只有存储函数的键才允许使用
list.Count()
语法

所以,不,你不能有两个具有相同标识符的键,不管它们持有什么数据

但是,这超出了语法,直接关系到正确的OO设计。通过确定键的用途,可以区分使用属性语法和方法语法的内容。如果关键是存储对象“状态”,则使用属性语法,如果关键是调用对象“行为”,则使用方法语法,因为存储“状态”和提供“行为”是对象首先为我们做的两件事


此外,JavaScript中实际上也没有“类”这样的东西。关键字及其语法的存在是为了让经典的OO程序员感觉更自在,但在幕后,类并不存在。只有对象及其原型对象。

不确定这是否可行,或者您是否希望这样做。
看看Proxy

也许使用Proxy object你能解释一下原因吗?@robertklep因为我来自C#背景,想知道我能不能用js做一些与C#语法相同的事情。我找到了答案:不。