amachang�Υ����Ȥ�������ɵ� JavaScript: �ؿ������� - ʸ�����ŪIT�Ϥ��ᰥ�����TB��������ɵ�
�ñ¤´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½É¤ï¿½ï¿½ï¿½ï¿½ï¿½
ITï¿½ïµ - JavaScript �δؿ���ְ������Τޤ��֤�����alert����
alert(hoge); hoge.method();���Ԥ��ɤ�����
alert + ���Τޤ��֤���
alert.s(hoge).method(); // 1 ���ơ��ȤΤޤ�
Function���֥������Ȥ��ĥ
�Ȥ����櫓�ǡ��ؿ���trace����method��Function Object���ɲä��Ƥߤ롣
�ޤ��ϼ��㡣
�����Ϥ�����
Function.prototype.trace = function(name, tracer){
var self = this;
if (!name) name = this.name || '__ANON__';
if (!tracer) tracer = function(n, a, r){
alert( n + '(' + a.join(', ') + ') = ' + r);
};
return function(){
var retval;
try{
retval = self.apply(this, arguments);
}catch(e){
retval = e;
}
var a = [];
for (var i = 0, l = arguments.length; i < l; i++){
a[i] = arguments[i]
}
tracer(name, a, retval);
return retval;
}
}
����ʤ鲿�Ǥ�trace�Ǥ��롣�������ؿ�̾��trace�ΰ���������ʤ��Ȥ����ʤ��Ȥ����Τ�����(�������ꡢ̵̾�ؿ��Ǥ�trace�Ǥ���)��
trace()��ؿ��Ȥ��Ƽ���
�ʲ���Function Object���ĥ����ΤǤϤʤ����̾�δؿ��Ȥ���trace()����������㡣
function trace(name, obj, tracer){
if(!obj) obj = window;
if(!(name in obj)){
throw new Error("No '" + name + "' method in object " + obj);
}
if (!tracer) tracer = function(n, a, r){
alert( n + '(' + a.join(', ') + ') = ' + r);
};
var orig = obj[name];
obj[name] = function(){
var retval;
try{
retval = orig.apply(this, arguments);
}catch(e){
retval = e;
}
var a = [];
for (var i = 0, l = arguments.length; i < l; i++){
a[i] = arguments[i]
}
tracer(name, a, retval);
return retval;
};
}
�Ȥ����ϡ�������
function mul(x,y){ return x * y }
trace('mul');
mul(2, 4);
�����������Ƥ��̤�ؿ�̾��ʸ����Ȥ����Ϥ��Ƥ���Τǡ�̵̾�ؿ��ˤϻȤ��ʤ������ì¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ø¿ï¿½ï¿½Ë¤ï¿½È¤ï¿½ï¿½Ë¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ã¤¨ï¿½Ð¡ï¿½ï¿½Ê²ï¿½ï¿½Ï¥ï¿½ï¿½é¡¼ï¿½ï¿½
(funcition(){
function mul(x,y){ return x * y }
trace('mul');
mul(2, 4);
})();
���������ư����
(funcition(){
var o = {};
o.mul = function(x,y){ return x * y };
trace('mul', o);
o.mul(2, 4);
})();
�ޤȤ�
DRY����»�ʤ��뤬��Function.prototype.trace()������JavaScript�äݤ��褦�˻פ���
Enjoy!
Dan the JavaScripter
�ɵ�:
Function#name��standard�ǤϤʤ��ȤΤ��ȡ�
Core JavaScript 1.5 Reference:Global Objects:Function - MDCname: The name of the function (not part of the standard).
����Ǥ⡢�åµï¿½Î¤è¤¦ï¿½Ë½ñ¤´ï¿½ï¿½ï¿½ï¿½Æ¤ï¿½safe�ʤΤǤ������ޤ��ޤ�����
��^2��:
JavaScript: �ؿ������� - ʸ�����ŪIT�Ϥ��ᰥ������Function.prototype.trace�����10���ܤǡ�retval = self.apply(null, arguments);�ȡ���äƤ��ޤäƤ���Τǡ����֥������ȤΥ᥽�åɤ�trace���褦�Ȥ���Ȥ��ޤ������ޤ���
�Ȥ����櫓�ǡ�null��this���ѹ����ޤ��������٤Ϥ��ޤ��Ԥ��Ϥ��Ǥ���
���Υ֥����˥����Ȥ���ˤ�����������ɬ�פǤ���
��������������
���ε����ˤϵ��ĥ桼�����������Ȥ��Ǥ��ޤ���