Javascript-如何定义构造函数

Javascript-如何定义构造函数,javascript,Javascript,我有一个这样写的对象: Object1.prototype = { isInit: false, Get : function (){} } 现在我想添加一个构造函数,它接受一个参数。我该怎么做呢?类声明 var User = function(name, age) { // constructor } User.prototype = {} 实例变量(成员) 静态变量 var User = function(name, age) { this.name = na

我有一个这样写的对象:

Object1.prototype = {
    isInit: false,
    Get : function (){}
} 

现在我想添加一个构造函数,它接受一个参数。我该怎么做呢?

类声明

var User = function(name, age) { // constructor
}

User.prototype = {}
实例变量(成员)

静态变量

var User = function(name, age) {
    this.name = name;
    this.age = age;
}

User.prototype = {}
var User = function(name, age) {
    this.name = name;
    this.age = age;
}

User.prototype = {
    staticVar: 15,
    anotherStaticVar: 'text'
}
var User = function(name, age) {
    this.name = name;
    this.age = age;
}

User.prototype = {
    getName: function() {
        return this.name;
    },

    setName: function(name) {
        this.name = name;
    }
}
var User = function(name, age) {
    this.name = name;
    this.age = age;
}

User.create = function(name, age) {
    return new User(name, age);
}

User.prototype = {}
这里我定义了两个静态变量。每个用户实例都可以访问这两个变量。注意,我们可以用值初始化它

实例函数(方法)

用法示例:

var user = new User('Mike', 29);
user.setName('John');
alert(user.getName()); //should be 'John'
静态功能

var User = function(name, age) {
    this.name = name;
    this.age = age;
}

User.prototype = {}
var User = function(name, age) {
    this.name = name;
    this.age = age;
}

User.prototype = {
    staticVar: 15,
    anotherStaticVar: 'text'
}
var User = function(name, age) {
    this.name = name;
    this.age = age;
}

User.prototype = {
    getName: function() {
        return this.name;
    },

    setName: function(name) {
        this.name = name;
    }
}
var User = function(name, age) {
    this.name = name;
    this.age = age;
}

User.create = function(name, age) {
    return new User(name, age);
}

User.prototype = {}

Javascript具有基于原型的对象模型。检查这个,你会突然在js的土地上感觉好多了。

假设“ctor”是指“constructor”,在JavaScript中这只是一个函数。在这种情况下,您的构造函数需要是“Object1”本身——换句话说,如果您已经将“Object1”定义为一个函数,那么这里的内容是有意义的

//function declaration
function func(){}
因此,

将是您类型的构造函数


现在有一些JavaScript库提供了用于定义类的实用程序层。使用这些函数,您通常会传递某种类型的对象(就像您已经得到的那样),其中包含一个“init”函数。这些库提供了用于创建“类”和从一个类扩展到另一个类的API。

我们可以在javaScript中定义构造函数,就像定义函数一样,所以构造函数只是一个函数

class CLASS_NAME
{
   private:
         int variable;
   public:
          CLASS_NAME()    //constructor
          {
                 variable = 0;
          }
};
//function declaration
function func(){}
对于CONSTRUCTOR,我们在construct like中使用大写字母的首字母

//constructor 
function Func(){}
现在用构造函数做任何你想做的事情

var constructor1 = new Func();

这并不是不正确的,但是使用这样一个名称的函数表达式在各种JavaScript解释器中会有各种各样的问题,而且可能(遗憾的是)最好避免。是kangax关于这个主题的一篇文章。+1但它不是一门真正的课程。JavaScript没有类的概念。@Felix:我同意你关于JavaScript类的看法,我只是称之为“类”。穆罕默德欢迎你这么说。一句话的答案在这里通常不会引起太多的注意。你可以通过解释它对试图找出如何定义javascript构造函数的人有什么价值来改进这个答案,或者你可以编辑你的建议答案来扩展它的作用以及它如何解决OP?亲爱的,我已经给出了构造函数的基本示例。注意(2019年1月1日)-这个答案来自2011年,并且早于ES2015
声明机制。答案仍然准确,但现代代码可能更喜欢较新的语法。