����Ϥ����Ȥ��ơ�
ITï¿½ïµ - JavaScript ��̾����������ܥ�ξ��ͤ������ç¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½È¤Ê¤ë¡£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½É½ï¿½ã¤¬ Firefox �γ�ĥ��ǽ��Υ���ܥ�Ǥ��롣
�����JS���Υ�ޥ̥�����amachang�ʤ�Ȥˤ�������Ǥⵯ��ȴ���˥����ҡ����򵤤�������̤���������Ƭ�ǤϤĤ��Ƥ���
window['http://d.hatena.ne.jp/amachang/']={}; // URI (function(){with(this){ // �����˥����ɤ�� }}).apply(window['http://d.hatena.ne.jp/amachang/']); // URI
����ϤդĤ���
// Namespace jp.ne.hatena.d.amachang a la Java if (jp == undefined) jp = {}; if (jp.ne == undefined) jp.ne = {}; if (jp.ne.hantena == undefined) jp.ne.hantena = {}; if (jp.ne.hantena.amachang == undefined) jp.ne.hantena.amachang = {};
��Χ���ˤ�뤫��
function Namespace(str){ var ns = str.split('.'); var here = window; for (var i = 0, l = ns.length; i < l; i++){ if (typeof(here[ns[i]]) == 'undefined') here[ns[i]] = {}; here = here[ns[i]]; } return here; }
�ȤǤ⤷�Ƥ����ơ�
new Namespace('jp.ne.hatena.d.amachang');
�Ȥ�����������������ʤ顢
(function(){with(this){ var hoge = 'hoge'; // ���Υ���������Ƕ�Í���륷��ܥ� this.fuga = 'fuga'; // Ʊ��̾�����֤Ƕ�Í���륷��ܥ� window.piyo = 'piyo'; // �������Х�Ƕ�Í���륷��ܥ� alert(hoge); // hoge alert(fuga); // fuga alert(piyo); // piyo }}).apply(window['http://d.hatena.ne.jp/amachang/']);
��function
������with
����ޤ�����apply
����Ȥ�����ˡ�ʤ��Ǥ⡢
var ns = new Namespace('jp.ne.hatena.d.amachang'); var hoge = 'hoge'; // ���Υ���������Ƕ�Í���륷��ܥ� ns.fuga = 'fuga'; // Ʊ��̾�����֤Ƕ�Í���륷��ܥ� window.piyo = 'piyo'; // �������Х�Ƕ�Í���륷��ܥ�
�Ǥ����Τǡ������줤��Ƭ�Ǥ�(�äƻ伫�Ȥ������줤�ˤʤä����ᤷ���ʤ��Τ�����)���Ȥ��Ĥ��Ƥ��륳���ɤˤʤ롣
���ʤߤˡ����������פ�Chapter 10��namespace�˰��Ƥ��Ƥ��ơ��侩���Ƥ���Τ���Ϥꤳ�������ˡ�ʤΤ����ɡ�typeof(ns) == 'undefined'
����ʤ���!ns
��namespace��¸��Ƚ��򤷤Ƥ���Ȥ��������ޥ��������ȡ�Namespace
pseudoconstructor �ϻ�λפ��Ĥ���ns = jp.ne.hatena.d.amachang;
������¤ꡢwith
�Ϥ�����ȤǤ����Ȼפ���
Dan the Javascripter
�ɵ�:ns == undefined
��typeof(ns) == 'undefined'
���ѹ���������λ�Ŧ�˲ä���typeof(ns) == 'undefined'
���������̸ߴ�����⤤��defined
��exists
���ʤ��Ȥ����Τâ¤ï¿½Ä¤ï¿½ï¿½ï¿½Î¤ï¿½ï¿½ï¿½ï¿½ë¡£
�����ʤ�ۤɡ��Ǥ⤽�μ��function lexical���ѿ��ˤϻȤ��ʤ��ΤǤ�?
Dan the Javascripter