Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.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 - Fatal编程技术网

Javascript 为什么';这不是一个原型作品的编辑吗?

Javascript 为什么';这不是一个原型作品的编辑吗?,javascript,Javascript,我想在函数构造函数(类)的原型中添加一个常量,但它却以未定义的形式返回,为什么 function myClass(){ } $(document).ready(function(){ myClass.prototype.age = 22; window.alert(myClass.age); }); 因为它是典型的遗传 以下将起作用: myClass.prototype.age = 22; var myobj = new myClass(); window.alert(my

我想在函数构造函数(类)的原型中添加一个常量,但它却以未定义的形式返回,为什么

function myClass(){

}

$(document).ready(function(){

  myClass.prototype.age = 22;

  window.alert(myClass.age);

});

因为它是典型的遗传

以下将起作用:

myClass.prototype.age = 22;

var myobj = new myClass();
window.alert(myobj.age);
在您的示例中,您正在向类原型添加属性。只有在实例化该类的对象时才能看到这些

要实现您的目标,只需依赖expando属性:

myClass.age = 22;

window.alert(myClass.age);
如果有帮助,可以将第一个示例看作是在C#中声明类的公共属性。您只能在实例化时访问它

第二个示例类似于在C#中的类上声明一个公共
static
属性。您不需要实例化它来访问它

编辑以供评论

要从类中的方法中访问年龄,请使用此
this

myClass.prototype.GetAge = function(){
    alert(this.age);
}

只有当
something
是类的实例时,使用
something.bar
才有效

我创建“类静态”变量的模式如下所示:

var MyClass = function() {

    if (typeof this.constructor.static === 'undefined') {
        // create (and initialise) default static variables
        this.constructor.static = { age: 22 };
    }

    // create a local alias
    var static = this.constructor.static;

    // now you can use "static.variableName" as a class static
    alert(static.age);
}

“为什么这项工作不起作用”除了缺少a’之外,也是非描述性的。很抱歉,我本应该更好地检查这个问题,谢谢编辑……他如何从
myClass
的方法中访问
myClass.age
?不,这不起作用,因为在第二个版本中,
.age
不在原型中,它是构造函数的一个属性。