0

以下のテストコードを書いたのですが、「test1」を表示したいのですobj.my().showTxt()が何も表示されません。ありがとう!

<html>
<body>
Primitive and String Objects
<script type="text/javascript">

    function Class1() {
        this.showTxt = function () { alert(this.name) }
    }

    Object.prototype.my = Class1;

    var obj = new Object();
    obj.name = "test1";

    obj.my().showTxt();

</script>

</body>
</html>
4

2 に答える 2

1

問題は、関数Class1がそれ自体のインスタンスを返さなかったことのようです。

これはあなたが達成しようとしていたことに近いですか?

function Class1() {
    this.show = function() {
        alert('test');
    }

    return this;
}

Object.prototype.my = Class1;

var obj = new Object();

obj.my().show();

http://jsfiddle.net/a4ZgF/

関数 Class1 は undefined を返します (return ステートメントがないため)。したがって、Object.prototype.my は、showTxt() という関数を持たない undefined と同じです。これを返すと、その機能を持つオブジェクトが返されました。

ブラウザーのデバッガーを使用すると、各行をステップ実行して何が起こっているかを確認するのに大いに役立ちます。

于 2012-10-11T03:43:29.417 に答える
0

少し整理すれば、やりたいことが実現できると思います。次に例を示します。

function Class1() {
    this.name = null;
}

Class1.prototype = {
    showTxt: function () { alert(this.name) }
};

var c = new Class1();
c.name = "test1";

c.showTxt();​

JSFiddle の例

あなたが何を達成しようとしているのかを本当に知らなくても、ここで他に何ができるかわかりません. Object関数ですべてを拡張しようとしていshowTxt()ますか?

于 2012-10-11T03:30:52.513 に答える