Javascript 我初始化了下面的object方法,它神秘地清除了我的object
我制作了以下代码片段:Javascript 我初始化了下面的object方法,它神秘地清除了我的object,javascript,object,constructor,Javascript,Object,Constructor,我制作了以下代码片段: var SCP_对象={ scp_函数:函数(){ var proxy_this={}; a=5; b=7; 返回此代理服务器; }, 获取scp_函数(){ this.scp_function.random_string=“你好,世界!”; } } var new_SCP=new SCP_Object.SCP_function()好的,这里发生了一些不同的事情!我会把每一个都做完。首先,new关键字/运算符是为JavaScript类和函数保留的。出于同样的原因,以下代
var SCP_对象={
scp_函数:函数(){
var proxy_this={};
a=5;
b=7;
返回此代理服务器;
},
获取scp_函数(){
this.scp_function.random_string=“你好,世界!”;
}
}
var new_SCP=new SCP_Object.SCP_function()代码>好的,这里发生了一些不同的事情!我会把每一个都做完。首先,new
关键字/运算符是为JavaScript类和函数保留的。出于同样的原因,以下代码将抛出错误:
设A={b:2};
新A();
// -> !!! 未捕获类型错误:A不是构造函数
在这里,我假设您希望将SCP_Object
设置为一个类,而不仅仅是一个普通对象,但我将首先将其作为一个对象来处理,然后再将其作为一个类来处理
在常规JavaScript对象上使用getter和setter是完全合法的,但有三个问题:
new_SCP
将不等于任何内容,因为getter函数会随意返回任何内容
getter函数与scp\u函数
属性的名称相同,这是非法的。属性不能与getter/setter函数共享相同的名称
您使用括号调用getter,就好像它是一个函数(()
),但它不是。您只需要调用getter的属性名,它将返回您设置为返回的任何值
让我们来解决这些问题:
var SCP_对象={
_scp_函数:函数(){
var proxy_this={};
a=5;
b=7;
返回此代理服务器;
},
获取scp_函数(){
var proxy_this=this.\u scp_函数()
proxy_this.random_string=“你好,世界!”;
返回此代理服务器;
}
}
var new_SCP=SCP_Object.SCP_函数;
控制台日志(新的SCP)代码>简单复制:var SCP_Object={get SCP_function(){return this.SCP_function;}};var foo=SCP_Object.SCP_函数代码>