���ΰ㤤����̯�Ȥ����ˤϤ��ޤ���ç¤ï¿½ï¿½ï¿½Î¤Ç¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ç¤ï¿½ï¿½ï¿½ï¿½é¤¤ï¿½ï¿½
��ʸ - JavaScript �ȡ֥��饹�פȡ֥��󥹥ȥ饯���פȡ֥ץ��ȥ����ספäƸ��դ�������ñ¤·¤ï¿½ï¿½ï¿½Ê¤ï¿½ - IT�ïµJavaScript�ؿ��μ��Τϡ�Function���饹�����֥��������Ǥ��������Function���饹�ε�ǽ������Ū�˲��⤷�ޤ��� JavaScript�δؿ����֥������Ȥ��������ò¤¹¤ï¿½ - builder by ZDNet Japan��Function ���饹�Υ��֥������ȡפäƸ����ޤ���͡���
�ͤ⤽���������˸��ä��ꤹ���Ǥ����ɡ���������̯���˰㤦��Ǥ���͡�
Type(��)�äƲ�?
�ޤ���������=�������������褦��
���Ȥ����Τϡ��֤ɤ�ʥǡ����򡢤ɤ��֤����פη�ޤꡣ�㤨��C��int a = 42;
�ϡ���a��int�Ȥ������Ǥ���פȤ�����̣�ˤʤ롣int�Ȥ������ˤϡ�42�����äƤ⡢3.14159265������ʤ��Τǡ�int a = 3.14159265;
�ϥ���ѥ��顼���Ƥ��Ƥ��ޤ���
����ϡ���Ū�ʷ�(static type)����ĸ���δؿ����Ȥ߹�碌�ͤ���Ȥ狼��䤹������Ū�ʷ�����ĸ���Ǥϡ��ؿ��Ȥ����Τϡ��ɤ�ʷ�����ĥǡ���������դ��뤫����Τäơפ��ơ��������ʤ��Ȥ��������դ��ʤ���strlen("foobar")
��OK�Ǥ�strlen(42)
��NG��
�����������ˤ�����ؿ��������Ȥ����С��ּ�ʬ���ɤ�ʥǡ���������դ���Τ����ΤäƤ��륵�֥롼����פȤ������Ȥˤʤ롣
Object(���֥������ȤäƲ�)?
���֥������Ȥϵդˡ��ǡ��������������Ǥ��뤫����Τäơפ��롣[1,2,3].length
�Ȥ����С�����[1,2,3]
������Ĺ������ΤäƤ���פȤ����櫓����"foobar".length
��"string"
��Ĺ������Τäơפ��롣������{"one":1}.length
�Ȥ����С���length�ʤ�ƥץ��ѥƥ��Ϥ���ޤ���פ��ܤ��롣{"one":1}
��Ĺ������Τ�ʤ��ס�
���֥������ȤȤϲ������Ȥ����С��ּ�ʬ�����������Τ����ΤäƤ���ǡ����פȤ������Ȥˤʤ롣
���ȥ��֥������Ȥζ�����
�ּ�ʬ���ɤ�ʥǡ���������դ���Τ����ΤäƤ��륵�֥롼����פˤ��Ƥ⡢�ּ�ʬ�����������Τ����ΤäƤ���ǡ����פˤ��Ƥ⡢������Ū�ϡ��ǡ����ȥץ��������Ȥ߹�碌����ꤹ��Ȥ����ˤ�����Ū�����롣�ץ������Ȥ�����ư��פ������ǡ����Ȥ�����̾��פ���ꤹ��Τ��ַ��פǡ��ǡ����Ȥ�����̾��פ��ץ������Ȥ�����ư��פ���ꤹ��Τ����֥������ȡ��Ȥ�����������Ǥ��롣
�ʤ����ꤹ�뤫�Ȥ����С��ҤȤ��˥ץ�����ޡ���Ǿ�Ϥ���Ϥ��뤿�ᡣ�ǡ����μ��बn�Ĥ��äơ������򰷤��ץ������μ��बm�Ĥ��ä��顢��ǽ���Ȥ߹�碌�ϡ���ĤΥץ�����ब���٤˰����ǡ���(=����)�����ä���Ĥξ��Ǥ���n*m�Ĥ��Ȥ߹�碌���ͤ����뤬���֤ޤȤ�פ��Ȥ߹�碌�Ϥ���ʤˤʤ���"one"+1
�������4
������������Ȥ�one1
�������������⥪�֥������Ȥ⤽���������Ȥ�Ǻ�ޤʤ������¸�ߤ��롣
�������θ���ϡ��ɤ���θ���ˡ������դ����Τ�¿��������������ϼ�˥��֥������ȤˤĤ����ä򤹤롣
Class(���饹)�ϥ��֥������Ȥ��߷׿�
���֥������Ȥ���ˤϡ����̤����ˡ�����롣
- �߷׿ޤɤ���˺��
- ���Ǥˤ��륪�֥������Ȥ�ѥ���
�ǽ����ڤ����Τ���1�Τ�����ǡ��߷׿ޤϥ��饹�ȸƤФ�Ƥ��롣���饹�Ϥ����ޤ��߷׿ޤʤΤǥ��֥������ȤǤϤʤ��������ǡ������Τ�ΤǤʤ��Τ�Ʊ���褦�ˡ�
Prototype(�ץ��ȥ�����)�ϥ��֥������Ȥ���
�Ȥ�������JavaScript�Τ�������2�Τ���������ܤ����褦�ˤʤä������Ǥ˥��֥������Ȥ�����ʤ顢�����֥��ԡ��פ��ơ��㤦�Ȥ����������դ���Ф��������Υ��ԡ��θ���ץ��ȥ����פȸ�������Ȥʤ륪�֥������Ȥ���ҤȤʤ륪�֥������Ȥ���Ȥ����櫓����
���Τ�����ǥ��֥������Ȥ������򡢥ץ��ȥ����׷����֥������Ȼظ�����(prototypal object-oriented language)�Ȥ��ץ��ȥ����ץ١���(prototype-base OO)�ȸƤ�Ǥ��롣����ȶ��̤����̣�ǡ����饹�򸵤˥��֥������Ȥ������ϥ��饹�١���(class-base OO)�ȸƤ֤褦�ˤʤä���
��������Ū�˰㤦��
���饹�١�����OO�ȥץ��ȥ����ץ١�����OO�Ƿ���Ū�˰㤦�Τϡ��ץ�������ư�����Ƥ������˥��֥������Ȥ�����뤳�ȡ����ʤ���᥽�å�(method)���ɲä���������������Ǥ��뤫��������椨�˥��饹�١�����OO����Ū(static)�ǥץ��ȥ����ץ١�����OO��ưŪ(dynamic)����
�ɤ���ˤ��Ĺ��û�Ϥ��롣���֥������Ȼظ�����Ū�ϡ��ǡ����˽���뤳�Ȥ���ꤹ�뤳�Ȥˤ��롣�������ˤ����Ƥϡ��ǡ����˽���뤳�Ȥ����饹�ˤ�äơָ���פ���Ƥ��륯�饹�١����������¿������ץ��ȥ����ץ١������ȡ�����ʤ��Ȥޤǽ���Ƥ��ޤ���
var a = new Date; alert(a); try{ delete Date; var b = new Date; alert(b); }catch(e){ alert(e); }
����������ʬ��Â���Ĥ褦�ʿ������Ȥ��������컦���פϡ���ľ���ޤ������ߤ����ʤ���ΤǤϤ��롣
������������=����Ȥϸ¤�ʤ������ѹ��Ǥ��뤫��Ȥ��ä��ѹ�����ɬ�פ�ޤ��ʤ����ष���֥ץ�����ޡ��ΰտޤɤ����ư����(do what I mean = DWIM)�δ�������Ԥ��С��ǡ����˽���뤳�Ȥ��ץ������¹Ի����ѹ��Ǥ����������꤬�������Ȥ�¿�����㤨��
if (!Array.prototype.map) Array.prototype.map = function(f){ var result = []; for(var i = 0, l = this.length; i < l; i++) result[i] = f(this[i]); return result; };
�Ȥ������ˡ���map
�᥽�åɤ��ʤ����Τߡ��¹Ի����ɲä���פȤ�������������Ū�ʸ���Ǥ�˾�ߤ��������ޤ�����ʪ�Ȥ����ΤϤ��٤ơ֥ץ��ȥ����ץ١����פʤΤǡ����������ष���ּ����פˤ���פ��롣
ưŪ����Υ��饹�ϥץ��ȥ�����?
�ä���䤳�����ʤ�Τϡ��¹Ի��˥��饹���Τ�Τ���ѤǤ������⤫�ʤ�¸�ߤ��뤳�Ȥ���ruby��perl��python�⤽���Ǥ��롣�������ä�����Ǥϡ��֥��饹�פȡ֥ץ��ȥ����ספζ����Ϥ��ʤꤢ��դ�ˤʤ롣
�ä�ruby�Υ��饹�Ȥ����Τϡ����饹�Ǥ����Ʊ���˥��֥������ȤǤ⤢�롣���Τ��Ȥϰʲ��򸫤�а���������������
irb(main):001:0> 1.object_id => 3 irb(main):002:0> 2.object_id => 5 irb(main):003:0> 1.class => Fixnum irb(main):004:0> 1.class.object_id => 2007200 irb(main):005:0> 2.class.object_id => 2007200 irb(main):006:0> 1.class.object_id == 2.class.object_id => true
ruby�Υ��饹��¹Ի��˲��Ѥ���Τȡ��ץ��ȥ����פ�ưŪ�˲��Ѥ���ΤȤ��ܼ�Ū�ʰ㤤�Ϥ���ۤɤʤ��褦�˸����롣perl�ξ�硢���⤽��OO�λ��Ȥߤ��Τ�Τ����١���(���֥������ȤϷ���̾����������᥽�åɤϤ��Ρַ���=̾�����֤ˤ���ؿ��Ǥ��ꡢ���δؿ��ˤϥ��󥹥���(instance)���������Ȥ����Ϥ����)�Ǥ��뤬��Ǥ�դ�̾�����֤�Ǥ�դδؿ���ưŪ���ɲú���Ǥ���ʾ塢��Ϥ��ܼ�Ū�˰ۤʤ�Ȥϸ�����������
�ޤȤ� = ��Function��ץ��ȥ����פȤ��륪�֥������ȡפȸƤܤ�
���Τ褦�ˡ�ưŪ����ˤ����Ƥϥ��饹��ޤ����֥������ȤȤ��ư����Ƥ��ޤ��ΤǤϤ��뤬������Ǥ�֥ץ��ȥ����ץ١����פȸƤФ�ʤ��Τϡ��֥��饹�ϲ��Ѳ�ǽ�ǤϤ��äƤ���ͳ���ʤ���в��Ѥ��٤��ǤϤʤ��פȤ�����ʸΧ����ڤ��Ƥ���Ȥ�����ͳ����Ĥȡ��ºݤΥ��֥������Ȥ���������¸���֥������ȤΥ��ԡ��ǤϤʤ������֥������������᥽�åɤμ¹�(�����Ƥ�new
�ȸƤФ��)�ˤ�뤳�Ȥ��ç¤ï¿½ï¿½ï¿½ï¿½
�ǡ��ǽ�������󵯤���롣AS3�ˤϤ��Ǥ�class��Ƴ������Ƥ��뤷�������JavaScript�ˤ�Ƴ�������褦����(������ǽ�Υ��֥������Ȥ��Ƽ���?)��������Function�����֥������ȤǤ��ꡢ��������ؿ�����������Ƥ���ʾ塢��Ϥ��Function���饹�Υ��֥������ȡפȤϸƤӤ����ʤ����Ƥ֤ΤǤ���С�Function��ץ��ȥ����פȤ��륪�֥������ȡפʤ�����Function������������륪�֥������ȡפʤ�����Function����˻��ĥ��֥������ȡפȤ���٤��ǤϤʤ�����������
�Ŀ�Ū�ˤϡ��Ǹ�θƤ������������äƤ��롣�����������ޤäƸ����ΤǤ���кǽ�����������
Dan the Prototypal Being
See Also:- 404 Blog Not Found:Type�Ȥϲ��Τ��Ȥ���Class����
- 404 Blog Not Found:���֥������Ȥ��񤷤��ʤ����񤷤��Τϥ��饹
- Core JavaScript 1.5 Guide:Class-Based vs. Prototype-Based Languages - MDC
�����κǸ��ɽ��ɬ����
���Υ֥����˥����Ȥ���ˤ�����������ɬ�פǤ���
��������������
���ε����ˤϵ��ĥ桼�����������Ȥ��Ǥ��ޤ���