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将我的真实类转换为问题的简单示例时。如果要使用的属性是实际定义的原型,并且原型代码恰好位于此构造函数下面,则任何解决方案都不起作用。