JavaScript Coding Guidelines for Mac OS X

Page Not Found - Apple Developer
Dashboardウィジェット作ろうとしてドキュメントをさらってたら見つけたので読んでみた。

JavaScript Basics

普通のJavaScriptのことしか書いてない。

Object-Oriented JavaScript

Getters and Setters

JavaScriptでこんな書き方ができるんすね。ビックリした!

var myObject = Object;
myObject.__defineSetter__( "mySetter", function(aValue) { this.myVariable = aValue; } );
myObject.mySetter = "abcde";
myObject.__defineGetter__( "myGetter", function() { return this.myVariable; } );
alert(myObject.myGetter);
// abcde

ゲッタとセッタの定義 - JavaScript | MDN
あんまり使う気がしないけど。大規模だと必要になるんかな。

JavaScript Best Practices

Memory and Performance Considerations
  • 一度しか使わないオブジェクトはちゃんとdeleteしましょう
var foo = function()
{
    // code that makes this function work
    delete foo;
}
window.addEventListener('load', foo, false);
  • deleteをちゃんと使いましょう
  • 非標準のエレメントを使うときはあるかどうか確認しましょう
if ( "innerHTML" in document.getElementById("someDiv") )
{
    // code that works with innerHTML
}
  • evalはパフォーマンスとメモリ最適化に良くないよ
Testing Your Code
  • Web Kitでもgeckoでも、Operaでも動くようにしようね
  • 「ツールキットの別のバージョンでも動くようにしてね」、というのは理由がよくわかんなかった
  • JSLintとか使って綺麗に書きましょう
Global Scope Considerations
  • varを使わないと無条件でグローバル変数になっちゃうのでvarを使おう
  • グローバルな変数、関数を使うときはハッシュにまとめとくか、一意なprefixをつけてほかのオブジェクトとの名前の衝突を防ごう
var globals = {
    foo: "some value";
    bar: null;
};

っていうコードがあるけど、これってハッシュだからセミコロンじゃなくてカンマ区切りじゃないとsyntax errorになると思うんだけど。

var globals = {
    foo: "some value",
    bar: null,
};
JavaScript Toolkits
  • ツールキットを使うとラクだけど重くなりやすいから、使うAPIだけロードしよう