为什么原型不能继承?

时间:2014-03-28 13:36:12

标签: javascript node.js parsley.js

你能解释一下为什么Validator.js会以它的方式启动(参见第一个代码片段)以及为什么我无法调用prototyped方法validate(第二个片段)

我目前正在使用validator.js(github/validator.js

代码开头如下:

    ( function ( exports ) {

var Validator = function ( options ) {
this.__class__ = 'Validator';
this.__version__ = '@@version';
this.options = options || {};
this.bindingKey = this.options.bindingKey || '_validatorjsConstraint';

return this;
};

Validator.prototype = {

constructor: Validator,

validate: function ( objectOrString, AssertsOrConstraintOrGroup, group ) {
  if ( 'string' !== typeof objectOrString && 'object' !== typeof objectOrString )
    throw new Error( 'You must validate an object or a string' );
......

然而,我无法在我的node.js代码中调用validate方法,如下所示:

var Validator = require('./static/vendor/parsley/validator.js'),
Assert = Validator.Assert,
Constraint = Validator.Constraint;

Validator.Validator().validate( 'foo', new Assert().Length( { min: 4 } ) );

谢谢你, 巴拉迪

1 个答案:

答案 0 :(得分:1)

要创建一个实例(将继承原型),您需要使用new keyword

new Validator.Validator().validate( 'foo', new Assert().Length( { min: 4 } ) );

另外,从构造函数中你不需要return this。那也会暗示这个错误。