Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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 zeros(bits, pattern) { this.bits = bits; this.pattern = pattern; }; zeros.prototype.short = function() { return this.bits.match(this.pattern)[0].length; }; heyJude = zeros('

不知道为什么这个类的构造不起作用,也许我只是用错误的方式调用了这个函数?这是我的密码:

  function zeros(bits, pattern) {
    this.bits = bits;
    this.pattern = pattern;
  };

  zeros.prototype.short = function() {
    return this.bits.match(this.pattern)[0].length;
  };

  heyJude = zeros('1100110011001100000011000000111111001100111111001111110000000000000011001111110011111100111111000000110011001111110000001111110011001100000011', /([0]).*?\1+/);
  console.log(heyJude.short());

通过
new
关键字调用它:

var heyJude = new zeros('...');

您需要使用
new
操作符初始化对象

这将实例化zeros类的一个实例

var heyJude = new zeros('110.....
摘自(根据上下文修改):

执行代码
新零(…)
时,会发生以下情况:

  • 创建了一个新对象,继承自
    zero.prototype
  • 使用指定的参数调用构造函数
    zeros
    ,并将此
    绑定到新创建的对象<代码>新零
    相当于
    新零()
    ,即如果未指定参数列表,则调用零时不带参数
  • 构造函数返回的对象成为整个
    new
    表达式的结果。如果构造函数没有显式返回对象,则使用在步骤1中创建的对象。(通常构造函数不返回值,但如果要覆盖正常的对象创建过程,则可以选择返回值。)

  • 值得注意的是,JavaScript没有Java和C#等基于类的OOP语言那样的类。JavaScript使用原型继承(一个对象引用另一个对象,该对象是它的原型,它可以从中继承属性)。上面是一个构造函数(
    zeros
    )和相关对象(
    zeros.prototype
    )。您可以将其与
    new
    一起使用,这将创建一个新对象,该对象由
    zero所指向的对象支持。prototype
    指向,然后使用
    this
    调用
    zero
    ,引用该新对象。ES2015增加了
    ,这主要是更方便的语法。也许还值得注意的是,JavaScript中压倒性的惯例是使用首字母大写字母命名构造函数函数,例如
    ,而不是
    ,而其他函数(按惯例)以首字母小写字母命名。有你需要知道的一切。引用时可能重复,请使用blockquotes避免瘟疫的出现。再次感谢@T.J.Crowder