为什么这个编辑原型不起作用?

Exi*_*tos 4 javascript

我想在函数构造函数(类)的原型中添加一个常量,但是为了未定义,为什么会回来?

function myClass(){

}

$(document).ready(function(){

  myClass.prototype.age = 22;

  window.alert(myClass.age);

});
Run Code Online (Sandbox Code Playgroud)

Jam*_*man 8

因为它的原型继承.

以下将有效:

myClass.prototype.age = 22;

var myobj = new myClass();
window.alert(myobj.age);
Run Code Online (Sandbox Code Playgroud)

在您的示例中,您将向类原型添加属性.只有在实例化该类的对象时才能看到这些.

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

myClass.age = 22;

window.alert(myClass.age);
Run Code Online (Sandbox Code Playgroud)

如果它有用,请将第一个示例视为在C#中声明类的公共属性.您只能在实例化时访问它.

第二个例子就像static在C#中声明一个类的公共属性.您无需实例化它即可访问它.

编辑评论

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

myClass.prototype.GetAge = function(){
    alert(this.age);
}
Run Code Online (Sandbox Code Playgroud)