�����äƤ狼��ˤ����ʤäƤ��봶���򤫤ĤƤ��󤶤�´������Τǡ�

JavaScript�ˤ�����ۤȤ�����ƤΥǡ����ϥ��֥������ȤǤ���

���֥������Ȥ�����ˤ⤤����������ޤ����������Ǥϡ֥᥽�åɤ���ġפȤ���������̣�ˤ����Ƥ���¤��Ȥ������ȤǤ����ºݤ˸��Ƥߤޤ��礦��

p(true.toString());
p("String".toString());
p((1).toString());
p((3.14159265).toString());
p([0,1,2,3].toString());
p({q:"answer to life, the universe, and everything", a:42}.toString());

�������.toString()�Ȥ����᥽�åɤ���äƤ��뤳�Ȥ��狼��ޤ���

����������Ĥ����㳰������ޤ���undefined��null�Ǥ���������Ĥϡ��ͤ��ʤ��פȤ����ͤǤ⤢��ޤ������᥽�åɤ�����ޤ���

try{
    p((undefined).valueOf());
}catch(e){
    p(e.message || e);
}
try{
    p((null).valueOf());
}catch(e){
    p(e.message || e);
}

���֥������Ȥˤ�����ढ�� - �ץ�ߥƥ��֤Ȼ���

���Υ��֥������Ȥˤϡ��¤�����ढ��ޤ����ͤ��Τ�Τ��ѿ��������Ǥ����Τȡ��ͤλ��Ȥ��������Ǥ��ʤ���ΤǤ������Ԥ�֥ץ�ߥƥ��֡פȤ����ޤ���

�ʲ��ϡ��ץ�ߥƥ��֤��㡣

var a = true;
var b = a;
p('a is ', a, ', b is ', b, '.');
b = !b;
p('a is ', a, ', b is ', b, '.');

var a = 0;
var b = a;
p('a is ', a, ', b is ', b, '.');
b++;
p('a is ', a, ', b is ', b, '.');

var a = "Hello";
var b = a;
p('a is ', a, ', b is ', b, '.');
b = "JavaScript";
p('a is ', a, ', b is ', b, '.');

�����ưʲ��ϡ����Ȥ��㡣

var a = {x:'foo', y:'bar'};
var b = a;
p('a.x is ', a.x, ', b.x is ', b.x, '.');
b.x = 'baz';
p('a.x is ', a.x, ', b.x is ', b.x, '.');

�㤤���狼��Ǥ��礦����a = b�Ȥ��Ƥ��顢b�ˤ������Ѥ�ä�����硢�ץ�ߥƥ��֤Ǥ�b�������Ѥ�äƤ��ޤ��������ȤǤ�a���Ѥ�äƤ��ޤäƤ��ޤ���

JavaScript�Ǥϡ�����䥪�֥�������--JavaScript������ˤ����륪�֥�������--�ʤɡ���������¤�פ���ĥ��֥������Ȥϡ���¤���Τ�ΤǤϤʤ������Ȥ��̤��Ƥ�������ʤ��ΤǤ��������Ǹ�����

a ==> {x:'foo', y:'bar'}
b ==> {x:'foo', y:'bar'}

�ǤϤʤ���

a ==v
    {x:'foo', y:'bar'}
b ==^

�ȤʤäƤ���Ȥ������ȤǤ���

�����ѿ����ץ�ߥƥ��֤����Ȥ�Ƚ�ꤹ����ˡ�Ǥ������¤˴�ñ����ˡ������ޤ���typeof()������ͤ򸫤�ΤǤ���object�ʳ������ƥץ�ߥƥ��֡������ޤᡢ���Ȥξ���ɬ��object�ˤʤ�ޤ���

Crockford���ץ��ȥ����׷Ѿ�

����Ǥϡ���a���饳�ԡ�����������b����̣�������Ѥ������׾��ˤϤɤ�������褤�Ǥ��礦����

������褹����ˡ�ΰ�Ĥ���Crockford�����Ĥ����ץ��ȥ�����Ū�Ѿ��ؿ��Ǥ���

var spawn = function(o){
    var F = function(){};
    F.prototype = o;
    return new F;
};

var a = {x:'foo', y:'bar'};
var b = spawn(a);
p('a.x is ', a.x, ', b.x is ', b.x, '.');
b.x = 'baz';
p('a.x is ', a.x, ', b.x is ', b.x, '.');
p('a.y is ', a.y, ', b.y is ', b.y, '.');

������a������ͤ�Ѿ����Ĥġ�b�ؤ��ѹ���a�˵ڤФʤ��褦�ˤʤäƤ��ޤ���

��������b = spawn(a)�ˤ�������֤�

a ==> {x:'foo', y:'bar'}
b ==> {x:'foo', y:'bar'}

�ǤϤ���ޤ���

a ===============v
                 {x:'foo', y:'bar'}
b ==> {prototype:^}

�ʤΤǤ���

�������Ƥߤ�ȡ��狼��ޤ���

var spawn = function(o){
    var F = function(){};
    F.prototype = o;
    return new F;
};

var a = {x:'foo', y:'bar'};
var b = spawn(a);
p('a.x is ', a.x, ', b.x is ', b.x, '.');
b.x = 'baz';
p('a.x is ', a.x, ', b.x is ', b.x, '.');
a.y = 'quux';
p('a.y is ', a.y, ', b.y is ', b.y, '.');

��b.y�ˤʤ���Τ�b.prototype.y�����Ȥ����ס����줬�ץ��ȥ�����Ū�Ѿ��Ȥ�����̣�ʤΤǤ�����a��b��������Ω���������פȤ������Ϥ�����Ȥ���äȺ��ä����ȤˤϤʤ�ޤ������ۤȤ�ɤξ��Ϥ���ǽ�ʬ�Ǥ��礦���ʤ�����������Ω�������ԡ����ߤ������ˤϡ�����404 Blog Not Found:javascript - uneval() for the rest of us!�ǾҲ𤷤�uneval.js�˴ޤޤ��clone()�ؿ���Ȥ��ޤ���

����Ϥ���Ȥ��ơ�crockford�Υץ��ȥ�����Ū�Ѿ��ؿ��ˤϤ⤦��ġ��ץ�ߥƥ��֤ˤϻȤ��ʤ��Ȥ������꤬����ޤ���

var spawn = function(o){
    var F = function(){};
    F.prototype = o;
    return new F;
};

var a = 0;
var b = spawn(a);
p('a is ', a, ', b is ', b, '.');
b++;
p('a is ', a, ', b is ', b, '.');

��������������н褹��ΤϤ���ۤ��񤷤��Ϥ���ޤ���

var spawn = function(o){
    if (typeof(o) === 'object' && o !== null){
        var F = function(){};
        F.prototype = o;
        return new F;
    }else{
        return o;
    }
};

var a = 0;
var b = spawn(a);
p('a is ', a, ', b is ', b, '.');
b++;
p('a is ', a, ', b is ', b, '.');

var a = null;
var b = spawn(a);
p('a is ', a, ', b is ', b, '.');
b = !b;
p('a is ', a, ', b is ', b, '.');

var a = {x:'foo', y:'bar'};
var b = spawn(a);
p('a.x is ', a.x, ', b.x is ', b.x, '.');
b.x = 'baz';
p('a.x is ', a.x, ', b.x is ', b.x, '.');
p('a.y is ', a.y, ', b.y is ', b.y, '.');


�Ǹ�� - JavaScript �� Class �Ϥʤ�

JavaScript�κ������ħ��������Ǥ��礦��new�黻�Ҥ����뤪�����ǡ��������� Class ������褦�˸����Ϥ��ޤ�����JavaScript �ˤ����Ƥϡ����֥������Ȥϡ�Class ��°����פΤǤϤʤ��֥ץ��ȥ����ס����֥������ȤȤ����Ƥ������߽Ф����פΤǤ���

Crockford �ϡ�JavaScript: The Good Parts�פˤ����ơ�new�黻�Ҥ�ְ����ѡ��ġפ�ʬ�ष�Ƥ���Τ⤽�줬��ͳ�Ǥ���Class�˴���Ƥ���ȼ¤ˤؤ�Ƥ��˻פ��ޤ������ץ��ȥ����׷Ѿ��Ȥ����ΤϤޤ�����ʪ����äƤ��뤳�Ȥǡ��ּ����פ˹ͤ���Ф���ۤɴ�ۤǤ�ʤ����伫�ȺǶ�ϤۤȤ��new�黻�Ҥ�ȤäƤ��ޤ���

Dan the JavaScripter