Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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 为什么静态变量不显示输出?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么静态变量不显示输出?

Javascript 为什么静态变量不显示输出?,javascript,jquery,Javascript,Jquery,我试图创建静态变量和静态函数。但当我访问它时,它会告诉我为什么? 这是我的功能 function Shape(){ this.namev="naven" Shape.PIe="3.14"; Shape.getName=function(){ return "nveen test shhsd" } } alert(Shape.PIe) alert(Shape.getName())

我试图创建静态变量和静态函数。但当我访问它时,它会告诉我为什么? 这是我的功能

  function Shape(){
        this.namev="naven"
        Shape.PIe="3.14";
        Shape.getName=function(){
            return "nveen test shhsd"
        }

    }

    alert(Shape.PIe)
    alert(Shape.getName())
您的
Shape.getName()
函数在第一次调用
Shape()
之后才会初始化(初始化代码在
Shape()
中),因此
Shape.getName
属性在调用
Shape()
之前不存在

也许你想要的是:

// define constructor that should only be called with the new operator
function Shape() {
    this.namev="naven";
}

// define static methods and properties
// that can be used without an instance
Shape.PIe="3.14";
Shape.getName=function(){
    return "nveen test shhsd"
}

// test static methods and properties
alert(Shape.PIe)
alert(Shape.getName())
记住,在Javascript中,函数是一个可以像普通对象一样拥有自己属性的对象。因此,在本例中,您只需将
Shape
函数用作一个对象,您可以在其上放置静态属性或方法。但是,不要期望在静态方法内部使用
this
,因为它们没有连接到任何实例。它们是静态的


如果希望实例属性或方法能够唯一地访问形状对象实例,则需要以不同的方式创建方法和属性(因为实例方法或属性不是静态的)。

您的
Shape.getName()
函数在
Shape()之后才会初始化第一次调用了
(初始化代码在
Shape()
中),因此在调用
Shape()
之前,
Shape.getName
属性不存在

也许你想要的是:

// define constructor that should only be called with the new operator
function Shape() {
    this.namev="naven";
}

// define static methods and properties
// that can be used without an instance
Shape.PIe="3.14";
Shape.getName=function(){
    return "nveen test shhsd"
}

// test static methods and properties
alert(Shape.PIe)
alert(Shape.getName())
记住,在Javascript中,函数是一个可以像普通对象一样拥有自己属性的对象。因此,在本例中,您只需将
Shape
函数用作一个对象,您可以在其上放置静态属性或方法。但是,不要期望在静态方法内部使用
this
,因为它们没有连接到任何实例。它们是静态的



如果希望实例属性或方法能够唯一地访问形状对象实例,则需要以不同的方式创建方法和属性(因为实例方法或属性不是静态的)。

要创建所有实例共享的静态变量,需要在函数声明之外声明它,像这样:

函数形状(){
// ...
}
Shape.PIe=“3.14”;
警惕(形状、馅饼);

有关如何将一些熟悉的OOP访问概念“转换”为Javascript的更多详细信息,请参阅本文:

要创建一个由所有实例共享的静态变量,您需要在函数声明之外声明它,如下所示:

函数形状(){
// ...
}
Shape.PIe=“3.14”;
警惕(形状、馅饼);

有关如何将一些熟悉的OOP访问概念“翻译”为Javascript的更多详细信息,请参阅本文:

解决方案是什么?解决方案是什么?将
getName()
设置为“静态”没有意义,因为它肯定应该返回与特定实例关联的name属性?我建议您找到一个关于JavaScript原型继承的教程,然后考虑是否将属性直接添加到<代码>形状>代码>是最好的方式。 Game Name()/Case>对于“静态”是没有意义的,因为它肯定应该返回与特定实例相关联的名称属性吗?我建议您找到一个关于JavaScript原型继承的教程,然后考虑是否直接向形状>代码>添加属性是最好的方法。