���[�U��`�I�u�W�F�N�g

�͂��߂�
�����ł� JavaScript �̍��x�ȏ������BJavaScript �̃��[�U��`�I�u�W�F�N�g�̍쐬���@�ɂ‚��ď��������Ǝv���܂��B
JavaScript �� �I�u�W�F�N�g�w���^���� �ƌĂ΂�A�{�i�I�ȃI�u�W�F�N�g�w���ł͂���܂��񂪁A�I�u�W�F�N�g�w������� Java(TM) �Ȃǂɋ߂����Ƃ͂ł���悤�ł��B
���A�I�u�W�F�N�g�ȂǂƏ����Ă��܂����A�����ɂ͂���͈Ⴄ�Ӗ��Ŏg����̂ŁA�����ł̓N���X�ƌĂԂ��Ƃɂ��܂��B���̃T�C�g�ł�����͓��ꂵ�Ă��̌��t���g�����Ƃɂ��܂��B
�I�u�W�F�N�g���ĉ��H
�l���猾�y����Ǝ��Ɋ낤���̂�(^^);�A���鏑�Ђ���ꕔ���p�B
�I�u�W�F�N�g�Ƃ͂��̖��̒ʂ�u���v�̂��Ƃł��B�������E�ɂ͐F�X�ȕ�������܂��B�Ⴆ�΁A�͂��݁A���M�A�{�Ȃǂ́u���v�ł��B
�������������ɂ́u��ԁv��u�ӂ�܂��v������܂��B�Ⴆ�΁A���M�ł���΁A�u��ԁv�͐��̐F�A�F�̔Z���A���̑����ȂǂŁA�u�ӂ�܂��v�͐���������Ȃǂł��B
�������������́u��ԁv��u�ӂ�܂��v���v���O�����Ɏ������񂾂��̂��I�u�W�F�N�g�w���ł��B
���ۂɂ̓v���O�����ł́u��ԁv��ϐ��ŕ\���A�u�ӂ�܂��v���֐��i���\�b�h�j�ŕ\�����ƂɂȂ�܂��B
�����āA�����̕ϐ���֐��̂��Ƃ� JavaScript �ł́A�v���p�e�B�A���\�b�h�ƌĂт܂��B
�‚܂�AJavaScript �ł����I�u�W�F�N�g�Ƃ����̂́A�u�v���p�e�B�ƃ��\�b�h���l�ߍ��񂾔��v�Ɨ������Ē����Ă����\�ł��B
�N���X���ĉ��H
�I�u�W�F�N�g�ƃN���X�͈Ӗ����Ⴂ�܂��B�����ł��l���猾�y����͎̂��Ɋ�Ȃ��������̂ł����A
�Ⴆ�΁u��Ɏ����Ă��鉔�M�v�͕��i�I�u�W�F�N�g�j�ł����A�u���M�ƍl�����Ă��镨�v�̓I�u�W�F�N�g�ł͂Ȃ��A�u�N���X�v�Ƃ������ƂɂȂ�܂��B
�‚܂�A�N���X�Ƃ����̂͊T�O�I�Ȑ��^�ł���A���ꂩ����ۂɐ�������镨���I�u�W�F�N�g�Ƃ������ƂɂȂ�܂��B
�v���O�����ł́A�N���X�͂����������u��ԁv��u�ӂ�܂��v���`�������ŁA�I�u�W�F�N�g�͎��ۂɓ��삷����̂ł��B
�����āA�l�͂��̃N���X���琶�����ꂽ���̂� Java(TM) �ɏK���A�C���X�^���X �ƌĂԂ��Ƃɂ��܂��B
�Ⴆ�΁AJavaScript �ɂ͓��t�Ɋւ���I�u�W�F�N�g Date �I�u�W�F�N�g������܂����ADate �̓N���X��
var date = new Date();
�� date �� Date �N���X�̃C���X�^���X�Ƃ������ƂɂȂ�܂��B
��������ł��ˁB������ʂɒm���Ă����Ȃ��Ă��v���O�����͏������Ⴂ�܂��̂ŁA�I�u�W�F�N�g�w���ɂ‚��Ă͑����Г����Q�l�ɂ��ĉ������B
�I�u�W�F�N�g�w���i�N���X���j�̗��_
�v���O�����ɂ͂��܂��܂ȕ��i������A����炪�X�̋@�\�����‚��ƂŃv���O�����S�̂Ƃ��Ă̋@�\���ʂ������ƂɂȂ�܂��B
�N���X�����邱�Ƃɂ��@�\����܂Ƃ߂ɂ���܂��̂ŁA�Ɨ��������܂�A���ƌ����Ă������Ղ����̂ɂȂ�ł��傤�B
�l�b�g��ɂ����ẮA�X�V���e�ՂɂȂ�A���l�̍�����v���O���������̂܂܊g�����Ďg�p���邱�Ƃ��o����悤�ɂȂ�܂��B
�߂������A�l�� JavaScript �͂�����������ɂȂ���̂ƐM���Ă���܂��B
�v���O�����������Ă݂�
�ł́A���ۂɃv���O�����������Ă݂܂��傤�B
�N���X���ɂ̓I�u�W�F�N�g���e�������g�������@�� �R���X�g���N�^�֐� ���g�������@�Ƃ�����܂����A�����ł͉��p�̌����R���X�g���N�^�֐����g�������̂Ő������܂��B
�R���X�g���N�^�֐��Ƃ����Ă��A�ʂ� JavaScript �ɓ��ʂȍ\��������킯�ł��Ȃ��A���ʂ̊֐��Ɠ����悤�ɏ������Ƃ��o���܂��B
�g�������l���āA�u�����`�v��\���N���X�ARectangle �N���X���쐬���邱�Ƃɂ��܂��B
�����`���`���邽�߂ɕK�v�ȏ��� ��(width) �� ����(height) �ł��B
function Rectangle( w, h ){
    this.width  = w ; // �����`�̕�
    this.height = h ; // �����`�̍���
}
����� Rectangle �N���X�̃R���X�g���N�^�֐��͒�`�ł��܂����B
�Ƃ�ł��Ȃ��A�������Ȃ��ł��i�΁j
Rectangle �N���X�͒����`�̕��ƍ�����\���Awidth �� height ���v���p�e�B�Ƃ��ĕێ����Ă��܂��B
this �L�[���[�h�Ńv���p�e�B�����肵�Ă��邱�Ƃɒ��ӂ��ĉ������B�܂��A�R���X�g���N�^�̓v���p�e�B�����������邾���ŁAreturn ���������K�v�͂���܂���B
�ł́A���ۂ� Rectangle �N���X�̃C���X�^���X�𐶐����Ă݂܂��傤�B
var r0 = new Rectangle( 2, 1 );
var r1 = new Rectangle( 4, 2 );
����� r0 �� r1 �� Rectangle �N���X�̃C���X�^���X�i�I�u�W�F�N�g�j�ɂȂ�܂����B
���̂悤�ɃC���X�^���X�𐶐�����ɂ� new ���Z�q���g�����ƂɂȂ�܂��B
���ꂩ��v���p�e�B width,height �����o���ɂ͎��̂悤�ɂ��܂��B
status = r0.width ; // ���ʂ� 2
�h�b�g(.)���Z�q ���g�p���āA���̌��Ƀv���p�e�B�����w�肷�邱�ƂɂȂ�܂��B�ȒP�ł��ˁB
���\�b�h���`����
�C���X�^���X����ČĂяo���֐��̂��Ƃ����\�b�h�ƌĂт܂��B
�lj����郁�\�b�h�͒����`�̖ʐς��擾������̂ɂ��܂��傤�i�ʐρ����~�����j
��قǂ̃v���O���������̂܂܈��p���ď����Ă݂܂��B
// �R���X�g���N�^�֐��̒�`
function Rectangle( w, h ){
    this.width  = w ; // �����`�̕�
    this.height = h ; // �����`�̍���
}

// ���̊֐������\�b�h�ɂȂ�B
// ������ this �L�[���[�h���g�p���Ă��邱�Ƃɒ���
function getArea_Rectangle(){
    return this.width * this.height ;
}

// �C���X�^���X����
var r0 = new Rectangle( 3, 2 );

// ���\�b�h�̒�`
r0.getArea = getArea_Rectangle ;

// ���\�b�h�̌Ăяo��
status = r0.getArea(); // ���ʂ� 3*2 �� 6
���̂悤�Ƀ��\�b�h��lj�����Ƃ��̓h�b�g(.)���Z�q�̌��Ń��\�b�h�����w�肵�� = �̂��ƂɎ��ۂɏ�������֐����w�肵�܂��B�ȒP�ł���ˁB
�ł����A����ɂ͖��_������܂��B����́A���̃��\�b�h���g����̂� r0 �݂̂ł��邱�Ƃł��B
�Ⴆ�΁A���̂��ƁA�V���� r1 �Ƃ����C���X�^���X�𐶐����Ă��Ar1.getArea() �Ƃ͏����܂���B
���ʂ͂������������\�b�h�͋��L�����A�S�C���X�^���X�Ŏg�p���������̂ł��B
�����ł͂��̋��L���@�ɂ‚��Đ������܂��B
���\�b�h�̋��L
��Ő����������\�b�h�� r0 �݂̂����g�p�ł��Ȃ����̂ł����B
�ł́A���\�b�h����S�C���X�^���X�ŋ��L���Ďg�p����ɂ͂ǂ�����Ηǂ��̂ł��傤���H
�A���Awidth �� height �Ƃ������C���X�^���X�ŗL�̂��̂ł͂Ȃ��A���\�b�h�Ȃǂ̋@�\���������L�������Ƃ������Ƃł��B
����ɂ́Aprototype �v���p�e�B�i�I�u�W�F�N�g�j���g�p���܂��iprototype �v���p�e�B�ɂ‚��Ă̐����ɂ‚��ẮA���Ȃ蒷���Ȃ�܂��̂ł����ł͐������܂���B�Ƃ������l���悭�������Ă��Ȃ��̂ŁA�����ł��Ȃ������ł��j�B
�Ƃ肠�����A�v���O���������Ă݂܂��傤�B
// �R���X�g���N�^�֐��̒�`
function Rectangle( w, h ){
    this.width  = w ; // �����`�̕�
    this.height = h ; // �����`�̍���
}

// ���̊֐������\�b�h�ɂȂ�B
// ������ this �L�[���[�h���g�p���Ă��邱�Ƃɒ���
function getArea_Rectangle(){
    return this.width * this.height ;
}

// ���\�b�h�̒�`
Rectangle.prototype.getArea = getArea_Rectangle ;

// �C���X�^���X����
var r0 = new Rectangle( 3, 2 );
var r1 = new Rectangle( 4, 6 );

// ���\�b�h�̌Ăяo��
status = r0.getArea(); // ���ʂ� 3*2 ��  6
status = r1.getArea(); // ���ʂ� 4*6 �� 24
prototype �Œlj����ꂽ���\�b�h�͑S�C���X�^���X�ŋ��L�i�Ɍp���j����܂��B
����ŁA���[�U��`�I�u�W�F�N�g�̊�{�͏I���ł��B�ȒP�ł�����ˁB

�����ł̓N���X�������Ƃ��̒��ӓ_�ɂ‚��ď����Ă��܂��B
�悭����ԈႢ
�N���X�����čŏ��ɊԈႦ�A�Y�ނ��Ƃ͋��炭�R�R�ɏ����Ă��邱�Ƃł��B
�d�v�Ȃ̂ŕK���A�ǂ�ł��������Bstatus �o�[�ɉ����\������邩�l���Ȃ���ǂ�ł݂ĉ������B
�Ⴆ�Έȉ��̃v���O�����ł��B
var r0 = new Rectangle( 3, 2 );
var r1 = new Rectangle( 4, 6 );

status = ( r0 == r1 );
����́A�\�z�ʂ� false ���\������܂��B�ł́A���͂ǂ��ł��傤�B
var r0 = new Rectangle( 1, 1 );
var r1 = new Rectangle( 1, 1 );

status = ( r0 == r1 );
true ���Ԃ����Ǝv���܂����H
����͊ԈႢ�ł��B����ς�Afalse ���Ԃ���܂��i���g�������ł��Q�Ƃ��Ă���ꏊ���Ⴄ�̂ł����������ʂɂȂ�܂��j�B �ł́A���͂ǂ����Ǝv���܂����H
var r0 = new Rectangle( 1, 1 );
var r1 = r0 ;

status = ( r0 == r1 );
����� true ���\������܂��i����͎Q�Ƃ��Ă���ꏊ���ꏏ�̂��߂ɂ����Ȃ�܂��j�B
�����̓|�C���^�ƌĂ΂��T�O�������������ʂ𐶂݂܂��i�����ł͐������܂���j�B

����Ɗ֘A���Ď��̃v���O���������Ă݂܂��傤�B
var r0 = new Rectangle( 4, 3 );
var r1 = r0 ;

r0.width = 5 ;

status = r1.width ;
������ 4 �ł͂Ȃ��A5 �ł��B
�‚܂�Ar1 = r0 �Ƃ������_�� r0 �� r1 �͓����Ƃ�����Q�Ƃ��A���̂܂܂ł͂����ƘA�����Ăӂ�܂����ƂɂȂ�܂��B
�Ӑ}�ʂ�ɕ\��������(4��\��������)�ꍇ�͎��̂悤�ɏ����܂��B
var r0 = new Rectangle( 4, 3 );
var r1 = new Rectangle( r0.width, r0.height );

r0.width = 5 ;

status = r1.width ;
�������Ă����΁A�X�e�[�^�X�o�[�ɕ\�������̂� 4 �ł��B
����炪��{�^�inumber,boolean,string�j�ƎQ�ƌ^(object,array,function)�̑傫�ȈႢ�ł����A������܂����ł��傤���H
�ŏ��͌˘f����������܂��񂪁A�����ƋC�ɂȂ�Ȃ��Ȃ�܂��B

��������́A���ꂾ���ł͕�����Ȃ��Ƃ����l�ɂ�������i�񂾃I�u�W�F�N�g�w���ɂ‚��Đ������܂��B
���t�̒�`
�P���i�ޑO�Ɍ��t�̒�`���͂����肵�Ă����܂��傤�B
JavaScript �͖{�i�I�ȃI�u�W�F�N�g�w������łȂ����߂��A���\�B���Ȍ��t�������悤�Ɏv���܂��B�����B�����B�l�����̂Ȃ��̈�l�ł��B
���k�Ȃ���AJava(TM) �Ŋw�񂾖l�Ȃ�̒�`�������Ă����܂��B

�N���X�F���̏�Ԃ�ӂ�܂����`�������iRectangle�Ȃǁj
�C���X�^���X�F�N���X���琶���inew�j���ꂽ���ۂ̂��́ir0,r1�Ȃǁj
�C���X�^���X�ϐ��F�C���X�^���X�ŗL�Ŏ����Ă���l�iwidth,height �Ȃǁj
�C���X�^���X���\�b�h�F�N���X�̃C���X�^���X�S�Ăŋ��L����֐��igetArea �Ȃǁj
�N���X�ϐ��F�N���X���̂��̂Ɋ֘A�t����ꂽ�ϐ��iMath.PI �Ȃǁj
�N���X���\�b�h�F�N���X���̂��̂Ɋ֘A�t����ꂽ�֐��iString.fromCharCode �Ȃǁj
�����o�F�N���X�̓����ɂ���ϐ��Ȃǂ̍\���v�f�S��

���������v���p�e�B�ƌĂ�ł��܂��������ꂾ���ł��A������Ƃ����͂��ł��B
��������͂����ɂ‚��Đ������܂����A�C���X�^���X�A�C���X�^���X�ϐ��A�C���X�^���X���\�b�h�ɂ‚��Ă͂��������ł��܂�����ˁB
�N���X�ϐ��A�N���X���\�b�h
JavaScript �ŃN���X�ϐ��A�N���X���\�b�h��\�����Ă݂܂��傤�B
���������I�ɂ͎��ɊȒP�ł��B��� Rectangle �N���X�Ɂ�2�̒l��lj����邱�Ƃɂ��܂��B
Rectangle.SQRT2 = 1.414 ;
�I���ł��i�΁j
�‚܂�A�N���X�ϐ��Ƃ́A�N���X���̂��̂Ɋ֘A�t�����ꂽ���̂ł�����A���̖��̒ʂ�N���X�ɕϐ���lj����܂��B
���̓N���X���\�b�h�ł����A����������܂����ˁi�΁j
��ł͓�‚� Rectangle �N���X�̃C���X�^���X�̖ʐς𒲂ׁA�傫�����̒l��Ԃ����\�b�h��lj����邱�Ƃɂ��܂��B
function Rectangle( w, h ){
    this.width  = w ; // �����`�̕�
    this.height = h ; // �����`�̍���
}

function getArea_Rectangle(){
    return this.width * this.height ;
}

// �C���X�^���X���\�b�h�̒�`
Rectangle.prototype.getArea = getArea_Rectangle ;

// ���̊֐��� Rectangle �N���X�̃N���X���\�b�h�ɂȂ�
function getAreaMax_Static_Rectangle( p, q ){
    return Math.max( p.getArea(), q.getArea() );
}

// �N���X���\�b�h�̒�`
Rectangle.getAreaMax = getAreaMax_Static_Rectangle ;

// �C���X�^���X����
var r0 = new Rectangle( 3, 2 );
var r1 = new Rectangle( 4, 6 );

status = Rectangle.getAreaMax( r0, r1 ); // ���ʂ� 24
�����悤�ɃN���X���̂��ƂɃ��\�b�h���������΂悢�ł��B
�N���X�����o�̍쐬�͑S�C���X�^���X�𓝊����Ĉ����ȂǁA����𗘗p����Ǝ��ɐ݌v���̍����������肵���Y��ȃv���O�������쐬�ł���悤�ɂȂ�܂��B
�N���X�̌p��
JavaScript �̌���ł͂��܂�g�����Ƃ͂Ȃ������m��܂��񂪁A�N���X���p������Ƃ��͈ȉ��̂悤�ɂ��܂��B
function SuperClass(){
    ...
}

function SubClass(){
    ...
}

SubClass.prototype = new SuperClass ;
prototype �I�u�W�F�N�g���ĕ֗��ł��ˁi�΁j
new SuperClass �̌��Ɋ��ʂ��Ȃ��̂� new SuperClass() �Ə������̂Ɠ����ŁAnew ���Z�q�̓���ł��B�������Ȃ��Ƃ��ɂ��̂悤�ɏȗ��ł��܂��B
���A�T�u�N���X�ɐe�N���X�̃v���p�e�B���g�p���āA�������������ꍇ�͎��̂悤�ɂ���Ɨǂ��ł��B
function SuperClass( p, q ){
    this.p = p ;
    this.q = q ;
}

function SubClass( p, q ){
    this.constructor( p, q );
}

SubClass.prototype = new SuperClass ;
constructor �֐����g�p����΂��̂悤�ɊȌ��ɂ����܂��iJava��super�݂����Ɏg�p���Ă܂��j�B constructor �֐��͍쐬���̊֐���Ԃ��̂ŁA���������� prototype �v���p�e�B�̓����������͕�����̂ł͂Ȃ��ł��傤���B

�p���Ɋւ��Ăł����A���炭�����͂��̂悤�ȕ��@�ł͂Ȃ��A���K�� extends �Ƃ����\�����g���ĕ\���������̂Ɨ\�z����܂��B
toString, valueOf ���\�b�h
������‚̃��\�b�h�͎��ɓ���ȐU�镑�������܂��B
�悸�AtoString ���\�b�h����������܂��傤�B
��ɂ� Rectangle �N���X���g�p���܂��B
// ���ꂪ Rectangle �N���X�� toString ���\�b�h�ɂȂ�
function toString_Rectangle(){
    return "�����` : "+this.width+"�~"+this.height ;
}

function Rectangle( w, h ){
    this.width  = w ;
    this.height = h ;
}

Rectangle.prototype.toString = toString_Rectangle ;

var r0 = new Rectangle( 3, 4 );

// �\��
status = r0 ; // ���ʂ́H�H�H�H
��������s����Ɖ����X�e�[�^�X�o�[�ɕ\�������Ǝv���܂����H
������ "object" �ł��A"undefined" �ł��Ȃ�
"�����` : 3�~4"
�ł��B�‚܂�AtoString ���\�b�h�͂��̃N���X�̃C���X�^���X��������^�ŎQ�Ƃ��ꂽ�Ƃ��ɌĂяo������s����܂��B
���ꂪ�f�o�b�O�ɖ𗧂‚��Ƃ͌����܂ł�����܂���B
�N���X���쐬�����Ƃ��́AtoString ���\�b�h���`���Ă������Ƃ����߂܂��B

���� valueOf ���\�b�h�ł����AtoString ��������^�ł������̂ɑ΂��AvalueOf ���\�b�h�͕�����^�ȊO�̊�{�^�i��ɐ��l�^�j�ŎQ�Ƃ��ꂽ�Ƃ��ɌĂяo����܂��B
�����ł́A���܂���p�I�ł͂Ȃ��ł����A�ʐς�Ԃ��悤�ɂ��܂��B
function valueOf_Rectangle(){
    return this.width*this.height ;
}

function Rectangle( w, h ){
    this.width  = w ;
    this.height = h ;
}

Rectangle.prototype.valueOf = valueOf_Rectangle ;

var r0 = new Rectangle( 3, 4 );

status = r0-0 ; // ���ʂ� 3*4-0 �� 12
-0 ��t�����Ă���̂͂��ꂪ���ł��邱�Ƃ𖾎��I�ɂ��邽�߂ł��BtoString ���\�b�h�� valueOf ���\�b�h�̂ǂ��炪�Ăяo����邩�͗p�r�ɂ���ĈႢ�܂��BtoSring ���\�b�h���Ăяo�������Ƃ��� r0+"", valueOf ���\�b�h���Ăяo�������Ƃ��� r0-0 �Ȃǂ̂悤�ɂ��邩�Ar0.toString() �Ȃǂ̂悤�ɖ����I�ɋL���������@�͂���܂���B
��������
�������ɋ��k�ł����A�l�Ȃ�̃N���X���̕��@�ƋL�q�̎d���ɂ‚��ď��������Ǝv���܂��B
�l����ԋC�ɂ���̂́A�o�b�e�B���O�i���O�̋����j�ł��B
���̓_�ł̓N���X���͍ō��̕��@�ł����B
�ȉ��ɂ� Rectangle �N���X��l�Ȃ�ɏ������������̂��L�q���Ă����܂��B
�C���X�^���X���\�b�h�ɂ́A
�l��ύX���� set,setWidth,setHeight
�l���擾���� getWidth,getHeight
�����Ƃ̃C���X�^���X�l�������������ׂ� equals
�ʐς�Ԃ� getArea
�Ίp���̒�����Ԃ� getDigo
width �� height ���ׂđ傫�����̒l��Ԃ� max�A����������Ԃ� min
width �� height ���X�P�[�����O���� scale
width �� height �𔼕��̒l�ɂ��� half
width �� height ��z��Ɋi�[�������̂��擾���� toArray
width �� height ���������Ƃ��Atrue ��Ԃ� valueOf
�W���o�͕����� toString
���`���A�N���X���\�b�h�ɂ́A
�C�ӌ��� Rectangle �N���X�������ɂƂ�A�ʐς̕��ϒl��Ԃ� getAveArea
���`���Ă��܂��B
// �R���X�g���N�^�̒�`
// 
// ----- �錾�̌`�� -----
// 
// new Rectangle()
// width = height = 1.0 ;
// 
// new Rectangle( Rectangle r )
// width = r.width, height = r.height ;
// 
// new Rectangle( number n ) : ���܂�
// width = height = n ;
// 
// new Rectangle( number w, number h )
// width = w, height = h ;
function Rectangle(){
    
    var a = arguments ; // ����
    
    // �����̌��ɂ��A�����𕪊�
    switch( a.length ){
        
        // �������O�‚̂Ƃ�
        case 0 : default : this.width = this.height = 1.0 ; break ;
        
        // �������P�‚̂Ƃ�
        case 1 : {
            // �����̌^�� Rectangle
            if( a[0].constructor == Rectangle ){
                this.width  = a[0].width ;
                this.height = a[0].height ;
            }else{
                this.width = this.height = a[0];
            }
            break ;
        }
        
        // �������Q�‚̂Ƃ�
        case 2 : {
            this.width  = a[0];
            this.height = a[1];
            break ;
        }
    }
}

// �֐����Ń��\�b�h���`���邱�Ƃɂ��A����Ȃ��o�b�e�B���O�����炷���Ƃ��”\�ɂȂ�B
// ���̊֐����ł���Ɋ֐����`�ł���Ƃ������Ƃɂ����ӁB
// ����A�S�Ẵ��\�b�h��`�ɂ͖����֐��i�֐����e�����j���g�p���Ă���B
function setBasicMember__Rectangle__(){
    
    var R  = Rectangle ;
    var RP = R.prototype ; // ���\�b�h�������ꍇ�ɕ֗�
    
    /************* �N���X���\�b�h *************/
    
    R.getAveArea = function(){
        var s = 0 ;
        var a = arguments ;
        for(var i=0;i<a.length;i++) s += a[i].getArea();
        return s/a.length ;
    };
    
    /********** �C���X�^���X���\�b�h **********/
    
    RP.set = function(){
        var a = arguments ;
        var r ;
        switch( a.length ){
            case 0 : default : r = new Rectangle(); break ;
            case 1 : r = new Rectangle( a[0] ); break ;
            case 2 : r = new Rectangle( a[0], a[1] ); break ;
        }
        // �V�����������A���̃C���X�^���X����l���Q�Ƃ���B
        // ���̃e�N�j�b�N�̓t�@�C���T�C�Y�����炵�����Ƃ��L��
        this.width  = r.width ;
        this.height = r.height ;
    };
    
    // �ȉ��̂悤�Ƀ��\�b�h�ɕ����̖��O��^���邱�Ƃ��”\
    
    RP.setWidth  = RP.setW = function( w ){ this.width = ( w ? w : 1.0 ); };
    RP.setHeight = RP.setH = function( h ){ this.height = ( h ? h : 1.0 ); };
    
    RP.getWidth  = RP.getW = function(){ return this.width ; };
    RP.getHeight = RP.getH = function(){ return this.height ; };
    
    // ���̂悤�ȃN���X�̏ꍇ�Aequals ���\�b�h���`���Ă����̂����
    RP.equals = function( r ){
        return ( ( this.width == r.width ) && ( this.height == r.height ) );
    };
    
    RP.getArea = function(){ return this.width * this.height ; };
    
    // �Ίp���̒��������߂鎮�� ��( width^2 + height^2 )
    RP.getDigo = function(){
        return Math.sqrt( Math.pow( this.width, 2 )+Math.pow( this.height, 2 ) );
    };
    
    RP.max = function(){ return Math.max( this.width, this.height ); };
    
    RP.min = function(){ return Math.min( this.width, this.height ); };
    
    RP.scale = function( v ){
        this.width  *= v ;
        this.height *= v ;
    };
    
    // �����\�b�h�����\�b�h���Ŏg�p���邱�Ƃ��ܘ_�A�”\
    RP.half = function(){ this.scale( 0.5 ); };
    
    RP.toArray = function(){ return new Array( this.width, this.height ); };
    
    RP.valueOf = function(){ return ( this.width == this.height ); };
    
    RP.toString = function(){ return "Rectangle : "+this.width+" �~ "+this.height ; };
    
} setBasicMember__Rectangle__(); // �֐��̌Ăяo��
���[�U��`�I�u�W�F�N�g�̍쐬��ɂ‚��Ă� Class Library �̃y�[�W������̂ŁA��������Q�l�ɂ��ĉ������B