以下は、2つのクラス、ClassA
およびを定義しますClassB
。機能は同じですが、性質が異なります。
function ClassA(name){
this.name = name;
// Defines method ClassA.say in a particular instance of ClassA
this.say = function(){
return "Hi, I am " + this.name;
}
}
function ClassB(name){
this.name = name;
}
// Defines method ClassB.say in the prototype of ClassB
ClassB.prototype.say = function(){
return "Hi, I am " + this.name;
}
以下に示すように、使い方に大きな違いはなく、どちらも「方法」です。
var a = new ClassA("Alex");
alert(a.say());
var b = new ClassB("John");
alert(b.say());
では、コメントとして提供したmsdnリンクによると、「関数」の意味は、C#やJavaのように「関数」は単なる「静的メソッド」のように見えますか?
// So here is a "static method", or "function"?
ClassA.createWithRandomName = function(){
return new ClassA("RandomName"); // Obviously not random, but just pretend it is.
}
var a2 = ClassA.createWithRandomName(); // Calling a "function"?
alert(a2.say()); // OK here we are still calling a method.
だからこれはあなたがあなたの質問に持っているものです:
var johnDoe =
{
fName : 'John',
lName: 'Doe',
sayHi: function()
{
return 'Hi There';
}
};
OK、これはですがObject
、明らかにクラスではありません。