2011-09-12 8 views
0

たとえば、Google Chrome開発ツールのjavascriptコンソールを使用すると、Mathのようなグローバルオブジェクトを検査することができます。javascriptコンソールを使用したjavascriptオブジェクトの検査

コンソールに簡単にMathを書き込んだり、戻ったりすることができます。 E、PI、abs、ceilなどのすべてのプロパティにアクセスできます。

また、StringはMathのようなグローバルオブジェクトですが、同じ操作を試みるとjavascriptのコンドールの出力は異なりますプロパティとメソッドは表示されません。

文字列のプロパティとメソッドを表示するには、このようなものを作成する必要があります。

var c = new String("asd") 

次に、オブジェクトを検査します。

私の質問は、Stringとして実装され、次に数学として実装された非常に単純なオブジェクトの例を作成できますか?

+1

コンソールに 'String.prototype'と入力してEnterキーを押します。 –

答えて

1

正規のOOの数学ではStaticクラスと見なされますが、そのインスタンスは1つのみです。 Stringは通常のクラスで、複数のインスタンスを作成します。

javascriptについては、

var Calc = { 
Addition : function(a,b) 
{ 
    return a+b; 
} 
} 

Calc.Addition(1,2)を呼び出して3を戻すことができます。あなたが最初にあなたがこのようなものかもしれないオブジェクトをインスタンス化する必要があり、他のサンプルでは、​​

:あなたのコンソールで

var Person = function(name) 
{ 
this.Name = name; 

this.Walk = function() 
{ 
    console.log(this.Name + " is walking"); 
} 
} 

var p = new Person("AntonJS"); 

を使用すると、pは名前というプロパティを持っている参照してくださいねログインして、関数が呼び出されます歩く。

typeof(new String("asd")) // 'object' 
typeof("asd") // 'string' 

しかし

(new String("asd")).constructor.name // String 
"asd".constructor.name // String 

文字列オブジェクトのプロパティとメソッドECMA-262(Javascriptの標準)および拡張の標準によって実現される:

+0

私はこれがあなたがしていることを願っています、理解するのはちょっと難しかったです。おそらく、OOをもっと深く見てみるべきでしょう。 – TJHeuvel

+0

(サンプルでは、​​オブジェクトは同じスコープ内で宣言されていると仮定しています) – TJHeuvel

1

diferenceは、天然型であります現在のjavascriptエンジンによって。 StringオブジェクトのString.prototypeオブジェクト定義で、上記のように表示されます。

編集:今あなたの質問をよく聞きます。 数学は抽象的なオブジェクトであり、 "asdf"は文字列のインスタンスです。

var MockMath = { 
    'sin' : function(){ 
    } 
    ,'cos' : function(){ 
    } 
    /* ... */ 
}; 

var MockString = function() { 
    /* ... */ 
}; 

MockString.prototype = { 
    'split' : function() { 
    } 
    ,'toLowerCase' : function() { 
    } 
    ,'toUpperCase' : function() { 
    } 
}; 

console.debug(new MockString("asdf")); 
console.debug(MockMath); 
関連する問題