1

JavaScript には実際のクラスはありません。しかし、あなたはあなたが得るもので働かなければなりません。

この「クラス」の例を見てみましょう。

var example = function (string) {
  this._self = string;
}

上記を使用すると、次のようなことができます。

var ex = new example("Hello People."),
    display = ex._self; // returns "Hello People."

のようなものを使用するとexample.prototype.newFun = function(){}、その「クラス」に新しいプロパティが追加されると思いました。しかし、それは私のコードでは機能しません。

ここに私がテストしている完全なコードがあります:

var example = function (string) {
  this._self = string;//public, var like, storage
}

var showExample = new example("Hello People");
showExample.prototype.display = function (a) {//code stops here, with error "Uncaught TypeError: Cannot set property 'display' of undefined"
  return a;
}
console.log(showExample._self);
console.log(showExample.display("Bye"));

私がやろうとしているのは、display関数を「パブリック関数」としてサンプル関数に追加することです。私は何か間違ったことをしているかもしれません。

4

5 に答える 5

4

プロトタイプを持つのはオブジェクトではなく、オブジェクトを作成するために使用する関数です。

var example = function (string) {
  this._self = string;
}

example.prototype.display = function (a) {
  return a;
};
于 2013-01-19T01:02:43.717 に答える
3

showExample のコンストラクターに変更できます。

元。

showExample.constructor.prototype.display = function (a) {
  return a;
}
于 2013-01-19T01:05:46.500 に答える
3

のプロトタイプがないためshowExample、のインスタンスにすぎませんexample。これを試してみてください:example.prototype.display = function (a) {}そしてそれはうまくいくでしょう。

JavaScript のクラスについてもう少し説明します。

于 2013-01-19T01:01:36.673 に答える
3

(showExample)prototypeのインスタンスの にメソッドを追加しようとしています。exampleインスタンスにはプロトタイプがありません。試して(つまり、 メソッドを ののにexample.prototype.display = function() {/*...*/};追加する、つまり) 、もう一度確認してください。その後、メソッドを「知っている」すべてのインスタンス、またはあなたの言葉では、すべてのインスタンスに対して「公開」されます。prototypeconstructorshowExampleexampleexampledisplaydisplay

を使用してメソッドをインスタンスに追加できます。それを使用すると、方法しかわかりません。showExample.display = function() {/*...*/};showExampledisplay

于 2013-01-19T01:01:44.433 に答える
1

あなたの場合、showExampleはexampleのオブジェクトです...

使用する

example.prototype.display = function(a)...
于 2013-01-19T01:03:15.400 に答える