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原型继承的教程,然后考虑是否将属性直接添加到<代码>形状>代码>是最好的方式。