0

したがって、コンストラクター内にメソッドが必要です。このようにコンストラクターを呼び出します

new EnhancedTooltip($("taskPreview1"))

そしてそれをそのように定義します

///<var> Represents the controls</var>
var EnhancedTooltip = function (toolTipObject) {

    ///<field name="alignment" type="Number">.</field>
    this.alignment = 2;
    ///<field name="associatedControl" type="Number">.</field>
    this.associatedControl = toolTipObject;
    ///<field name="caption" type="Number">.</field>
    this.caption = "Let's see how this works";
    ///<field name="description" type="Number">.</field>
    this.description;
    ///<field name="enableEffects" type="Number">.</field>
    this.enableEffects = false;
    ///<field name="fadeAnimationSpeed" type="Number">.</field>
    this.fadeAnimationSpeed = 500;
    ///<field name="image" type="Number">.</field>
    this.image;
    ///<field name="minimumHeight" type="Number">.</field>
    this.minimumHeight = 100;
    ///<field name="minimumWidth" type="Number">.</field>
    this.minimumWidth = 200;
    ///<field name="objectName" type="String">.</field>
    this.objectName = $("taskToolTip");
    ///<field name="padding" type="Number">.<field>
    this.padding = 5;
    ///<field name="tailAngle" type="Number">.</field>
    this.tailAngle;
    ///<field name="tailDiamensions" type="Object">.</field>
    this.tailDimensions = new Size(15, 0);

    EnhancedTooltip.init();

    this.init = new function () {
      ///<summary>Initializes the class EnhancedTooltip.<summary>

      console.log(EnhancedToolTip.objectName);
    };

  };

EnhancedTooltipにはメソッドinitがないというエラーが発生します。では、init をどのように定義すればよいでしょうか。

また、init から他の関数​​を呼び出したい場合は、どうすればよいでしょうか。例えば

this.addToolTipElements = function() {

    $("#workspaceContainer").append("<div id = taskToolTip class = taskToolTip</div>");

    this.objectName.append("<canvas id = toolTipCanvas class = toolTipCanvas </canvas>");


    this.objectName.append("<div id = toolTipCaption class = toolTipCaption>" + this.caption + "</div>");

 };
4

4 に答える 4

1

これは、「EnhancedTooltip」がコンストラクター関数であり、「init」プロパティがないためです。ただし、構築中のオブジェクト ( this) は次のことを行います。

this.init();

そして関数内:

  console.log(this.objectName);

また、そうではありませnew functionfunction

this.init = function() {
  console.log(this.objectName);
};

ah を編集し、Sirko が指摘するように、定義後に関数を呼び出します。

于 2012-07-04T13:51:45.900 に答える
0

あなたはinitを間違って呼んでいます。プロトタイプではなくスコープで定義したthisため、EnhancedToolTipには作成前にこの関数がありません。これを試して:

var EnhancedTooltip = function (toolTipObject) {
  [..]

  this.init = new function () {
    ///<summary>Initializes the class EnhancedTooltip.<summary>
    console.log(this);
  };

  this.init();
};
于 2012-07-04T13:55:59.317 に答える
0

関数式を使用しているため、ここで変数の巻き上げに頼ることはできません。

次のように呼び出す前に、メソッドを定義するだけです。

// rest of the code    

///<field name="tailDiamensions" type="Object">.</field>
this.tailDimensions = new Size(15, 0);

this.init = new function () {
  ///<summary>Initializes the class EnhancedTooltip.<summary>

  console.log(this.objectName);
};

this.init();

補足として、コンストラクター内でのみ使用してオブジェクトを参照する必要がありますthis

于 2012-07-04T13:52:07.750 に答える
0

まず、宣言する前にinit()メソッドを呼び出します。

2 つ目は、クラスを宣言するためにより良いスタイルを使用することです。

たとえば、私はこれが好きです

于 2012-07-04T13:52:40.237 に答える