Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我初始化了下面的object方法,它神秘地清除了我的object_Javascript_Object_Constructor - Fatal编程技术网

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_函数