���ΰ㤤����̯�Ȥ����ˤϤ��ޤ���礭���Τǡ������Ǥ����餤��

��ʸ - 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��

404 Blog Not Found:Type�Ȥϲ��Τ��Ȥ���Class����
�����������ˤ�����ؿ��������Ȥ����С��ּ�ʬ���ɤ�ʥǡ���������դ���Τ����ΤäƤ��륵�֥롼����פȤ������Ȥˤʤ롣

Object(���֥������ȤäƲ�)?

���֥������Ȥϵդˡ��ǡ��������������Ǥ��뤫����Τäơפ��롣[1,2,3].length�Ȥ����С�����[1,2,3]������Ĺ������ΤäƤ���פȤ����櫓����"foobar".length��"string"��Ĺ������Τäơפ��롣������{"one":1}.length�Ȥ����С���length�ʤ�ƥץ��ѥƥ��Ϥ���ޤ���פ��ܤ��롣{"one":1}��Ĺ������Τ�ʤ��ס�

404 Blog Not Found:���֥������Ȥ��񤷤��ʤ����񤷤��Τϥ��饹
���֥������ȤȤϲ������Ȥ����С��ּ�ʬ�����������Τ����ΤäƤ���ǡ����פȤ������Ȥˤʤ롣

���ȥ��֥������Ȥζ�����

�ּ�ʬ���ɤ�ʥǡ���������դ���Τ����ΤäƤ��륵�֥롼����פˤ��Ƥ⡢�ּ�ʬ�����������Τ����ΤäƤ���ǡ����פˤ��Ƥ⡢������Ū�ϡ��ǡ����ȥץ��������Ȥ߹�碌����ꤹ��Ȥ����ˤ�����Ū�����롣�ץ������Ȥ�����ư��פ������ǡ����Ȥ�����̾��פ���ꤹ��Τ��ַ��פǡ��ǡ����Ȥ�����̾��פ��ץ������Ȥ�����ư��פ���ꤹ��Τ����֥������ȡ��Ȥ�����������Ǥ��롣

�ʤ����ꤹ�뤫�Ȥ����С��ҤȤ��˥ץ�����ޡ���Ǿ�Ϥ���Ϥ��뤿�ᡣ�ǡ����μ��बn�Ĥ��äơ������򰷤��ץ������μ��बm�Ĥ��ä��顢��ǽ���Ȥ߹�碌�ϡ���ĤΥץ�����ब���٤˰����ǡ���(=����)�����ä���Ĥξ��Ǥ���n*m�Ĥ��Ȥ߹�碌���ͤ����뤬���֤ޤȤ�פ��Ȥ߹�碌�Ϥ���ʤˤʤ���"one"+1�������4������������Ȥ�one1�������������⥪�֥������Ȥ⤽���������Ȥ�Ǻ�ޤʤ������¸�ߤ��롣

�������θ���ϡ��ɤ���θ���ˡ������դ����Τ�¿��������������ϼ�˥��֥������ȤˤĤ����ä򤹤롣

Class(���饹)�ϥ��֥������Ȥ��߷׿�

���֥������Ȥ���ˤϡ����̤����ˡ�����롣

  1. �߷׿ޤɤ���˺��
  2. ���Ǥˤ��륪�֥������Ȥ�ѥ���

�ǽ����ڤ����Τ���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: