JavaScript类-初始化对象时调用方法

JavaScript类-初始化对象时调用方法,javascript,object,Javascript,Object,我有一个类似于下面的课程。创建对象时,如何调用我的init方法?我不想像下面那样创建对象的实例,然后调用initialize var myObj = new myClass(2, true); myObj.init(); function myClass(v1, v2) { // public vars this.var1 = v1; // private vars var2 = v2; // pub methods this.init =

我有一个类似于下面的课程。创建对象时,如何调用我的
init
方法?我不想像下面那样创建对象的实例,然后调用initialize

var myObj = new myClass(2, true);
myObj.init();

function myClass(v1, v2) 
{
    // public vars
    this.var1 = v1;

    // private vars
    var2 = v2;

    // pub methods
    this.init = function() {
        // do some stuff        
    };

    // private methods
    someMethod = function() {
        // do some private stuff
    };
}

注意。构造函数函数名应以大写字母开头,以区别于普通函数,例如
MyClass
,而不是
MyClass

您可以从构造函数调用
init

var myObj = new MyClass(2, true);

function MyClass(v1, v2) 
{
    // ...

    // pub methods
    this.init = function() {
        // do some stuff        
    };

    // ...

    this.init(); // <------------ added this
}
var myObj=新的MyClass(2,true);
函数MyClass(v1、v2)
{
// ...
//发布方法
this.init=函数(){
//做点什么
};
// ...
this.init();//只需添加

this.init();

请访问myClass函数。

请参阅下面的一个可能的答案,以及对代码的一些更正

function myClass(v1, v2) 
{
    // public vars
    this.var1 = v1;

    // private vars
    // use var to actually make this private
    var var2 = v2;

    // pub methods
    this.init = function() {
        // do some stuff        
    };

    // private methods
    // this will be private as though it had been declared with var
    function someMethod() {
        // do some private stuff
    };

    //call init
    this.init();
}

要做到这一点,还有更为顺畅的方法:

this.init = function(){
  // method body
}();
这将创建方法并调用它

ECMAScript 2015中引入的JavaScript类主要是对JavaScript现有的基于原型的继承的语法糖分。类语法没有向JavaScript引入新的面向对象继承模型。JavaScript类提供了更简单、更清晰的语法来创建对象和处理继承

-

使用此语法时,由于实例化时仅运行
constructor()
方法,因此无法自动实例化对象。始终必须添加
user=new MyUser()

var用户;
类MyUser{
构造函数(var1,var2){
this.var1=var1;
this.var2=var2;
}
静态方法(){
//使用类名“MyUser”直接访问`
}
实例方法(){
//使用对象实例访问
返回真值
}
}

user=new MyUser('hey','there')
谢谢。在发布之前,我实际上尝试调用了'this.init();',但我是在函数声明之前调用的,所以这就是为什么它不起作用的原因。=]如果我简单地通过
var obj={init:function(){…}来定义我的对象,我该怎么做呢
?我该怎么称呼它?@Eugene-有什么问题:
var makeObj=function(x,y){return{a:x+y};}
这是一个函数,可以创建一个对象,并在返回它之前执行您所需的任何一次性初始化。有时称为工厂函数。它没有任何问题,但有一个巨大的对象,它已经用大括号定义,不能正常工作。现在一切都很好。没问题。:)谢谢,这是一个typo将我的真实类转换为问题的简单示例时。如果要使用的属性是实际定义的原型,并且原型代码恰好位于此构造函数下面,则任何解决方案都不起作用。