2011-07-28 3 views
0

我々はこのオブジェクト名の前に "function"キーワードが必要な理由は?すべてのオブジェクトは実際に機能していますか?

function myObject(){ 
Properties and methods here---- 
}; 

のようなオブジェクトを作成する場合、オブジェクトの名前は、それが必要である前に、私たちは、「機能」のキーワードを書くのか?すべてのオブジェクトは実際の機能ですか?このような直接オブジェクト名を書くことはできませんか?

myObject(){ 
Properties and methods here---- 
}; 

答えて

1

いいえ、すべてのオブジェクトが機能ではありません。 (すべての機能はいえ、オブジェクトである。)ここで

は、objは関数ではありません。ここに

var obj = { 
    foo: "bar" 
}; 

NOR dt

var dt = new Date(); 

functionキーワードを言うためには必要です」次に続くのは関数宣言または関数式です。これはJavaScriptの基本的な構文の一部です。

3

最初のケースでは、関数をオブジェクトのコンストラクタとして使用できます。したがって、次のように指定することができます。

function Person(name) { 
    this.name = name 
} 

Person.prototype = { 
    // methods can go in here 
} 

person1 = new Person("bob"); 
alert(person1.name) // alerts "bob" 

関数をオブジェクトとして使用することもできます。例:

function myObject() { 
    return myObject.test; 
} 

myObject.test = "bob"; 
alert(myObject()) // would alert "bob" 

しかし、すべてのオブジェクトは機能ではありません。

var someObject = { 
    name: "bob", 
    moody: "sad" 
} 

alert(someObject.name); // alerts "bob" 
try { 
    someObject(); 
} catch (er) { 
    alert(er); // alerts "TypeError: object is not a function" 
} 

私は[いいえ、それは必須ではありませんhttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function

0

を見てみましょうお勧めしたいです。あなたも持つことができます。

var myObject = { 
    Prop1: "Value1", 
    Prop2: "Value2", 
    Method1: function() { 
     alert("hello"); 
    } 
}; 

ライブテスト・ケース:http://jsfiddle.net/rKunx/

2

function関数を宣言します。 JavaScriptの仕組みのために、関数をクラスとして使用して、オブジェクトを作成することができます。

var myObject = { 
    x : 30, // a property 
    getX : function() { // a method 
    return this.x; 
    } 
} 

しかし、JavaScriptをご理解は多くの作業を必要とします:あなたは本当にただのオブジェクトをしたい場合でも、使用

は波線このように、ブレースそれについて数冊の本を読みました。

+0

クラスではなくコンストラクタです。 JavaScriptにはクラスがありません。 – delnan

+0

こんにちはMalvolio、 答えのためのthx:はい私はjavascriptを理解するために多くの仕事が必要です。私は少数の本や記事を毎日読んでいます。 – Jamna

+0

こんにちはdelnan、 私たちはコンストラクタを作ることができるように、オブジェクトの名前の前に "function"というキーワードを書いています... "objectname"のインスタンスを作るのに "new"というキーワードを使用しています。それはあなたのサポート – Jamna

0

あなたは書くことができます。

myObject = { 
Properties and methods here---- 
} 
+0

のために..thxしかし、私はこのような書き込みしようとするとエラーが発生している... – Jamna

2

一つの理由は明らかにdisambiguityです。

function foo() 
{ 
    alert("cake") 
} 

foo() 
{ 
    alert("burb"); 
} 

foo(); 

アラートcakeburb、第二foo() {...}としてcakeはちょうど{}に囲まれた正規複合文に続いて、通常の関数呼び出しです。

関連する問題