Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

JavaScript文法メモ

rubyのハッシュ、Objective-CのNSDictionaryに相当するものはObject型であり

var obj = {};
obj['foo'] = 'bar';
var obj = {
  foo : 'bar',
  baz: 'piyo',
};

のように作る。 ruby,Objcと異なり、Object型はクラスのようなものなので、関数も追加できる。 配列はObject型だが、以下のように利用できる。

var arr = [];
// 配列にデータを追加
arr.push( "man" );


スコープについて
JavaScriptにはグローバルスコープ、関数スコープがある。
ブロックスコープは存在しない。
クライアントサイドJavaSciptでは各ウィンドウ(タブ)、各フレーム(iframe含む)単位でグローバルスコープがあり、ウィンドウ間で相互のグローバルスコープにはアクセスできない。
フレームについては親と子フレームの間では相互にアクセス可能である。
例えば、以下のhtmlの場合、a.jsとb.jsのグローバルスコープは同一のスコープになる。

<!DOCTYPE html>
<html>
<head>
  <script type="text/javascript" src="a.js"></script>
  <script type="text/javascript" src="b.js"></script>
</head>
<body>
  <span>Something</span> 
</body>
</html>


Safari extensionでのpopoverではconsole.logでのデバッグ出力をコンソールでは確認できない。
alert("hoge")は動作する。
参考 How to debug safari extension popover? - Stack Overflow
=== strict equals 演算子 型が異なる場合はfalse
== equals演算子 型変換を行ってから比較する

通常メソッドはいわゆるインスタンスメソッド
静的メソッドはいわゆるクラスメソッド

delete演算子はオブジェクトインスタンスのプロパティを削除する機能がある。