1

次のエラーが発生します

未定義またはnull参照のプロパティ'showMsg'を取得できません

以下のコードの最後の行:

    Function.prototype.showMsg = function () {
        alert("This is a sample message.");
    };

    function Person() {
        this.name = "Mahesh";
    };

    var personObj = new Person();
    personObj.prototype.showMsg();

に追加したので、実際にはインスタンスからshowMsg()アクセスできるはずです。では、なぜこのエラーが発生するのですか?PersonFunction.prototype

4

1 に答える 1

1

よくあなたはそれをすべて間違って理解します

Function.prototype.showMsg = function () {
    alert("This is a sample message.");
};

function Person() {
    this.name = "Mahesh";
};

var personObj = new Person();
personObj.prototype.showMsg();

最初に関数クラスのプロトタイプを作成し、次にPersonというカスタムクラスを作成してから、Personのインスタンスを作成します。そして、あなたは2つの間違いであるshowMsgである非常に青いプリントを呼び出しています1 showMsgは人にバインドされていませんそしてそれがバインドされている場合は、このように直接呼び出します

personObj.showMsg()

私の観点からこのスクリプトを機能させるには、次のように書いてもらいます->

function Person() {
 this.name = "Mahesh";
};

Person.prototype.showMsg = function () {
  alert("This is a sample message.");
};

var personObj = new Person();
personObj.showMsg();

私のスクリプトは、Personオブジェクトと関数クラスを介して必要な場合にshowMsgをPersonクラスに直接バインドしました。次に、このように関数クラスから継承する必要があります。

Function.prototype.showMsg=function () {
   alert("This is a sample message.");
    };

function Person() {
   this.name = "Mahesh";
    };


Person.prototype = Function;
Person.prototype.constructor = Person;

var personObj = new Person();
personObj.showMsg();

よろしく

于 2013-03-24T12:11:56.777 に答える