ES5定义一个类的时候,一般都是如下例1的写法,为什么不用例2的写法?
    例1:

    1. function Point(x, y) {
    2. this.x = x;
    3. this.y = y;
    4. }
    5. Point.prototype.toString = function () {
    6. return '(' + this.x + ', ' + this.y + ')';
    7. };
    8. var p = new Point(1, 2);

    例2:

    1. function Point(x, y) {
    2. this.x = x;
    3. this.y = y;
    4. this.toString = function () {
    5. return '(' + this.x + ', ' + this.y + ')';
    6. };
    7. }
    8. var p = new Point(1, 2);

    答:使用原型的本意就是为了继承,共用相同的方法或属性,如上例1的方式定义的类,new Point(1, 2) 时创建的对象,其方法在原型链上,所有使用new创建的对象都使用的是同一个原型对象,意味着所有方法在内存中只存在一份。而例2的方式定义的类,每次new的时候创建的对象本身都会自带toString方法,意味着所有的对象的toString方法是项目独立的,创建了多少对象,就有多少个toStirng函数,没有起到继承的作用。
    结论:方法定义在原型上就是为了公用,节约内存资源。