前面在原型对象每添加一个属性和方法就要书写一遍 Person. prototype 。

为减少不必要的输入,更常见的做法是用一个包含所有属性和方法的对象字面量来重写整个原型对象,将 Person. prototype重置到一个新的对象。

注意:原型对象会丢失constructor成员,

所以需要手动将constructor 指向正确的构造函数**。**

原型对象使用建议

在定义构造函数时,可以根据成员的功能不同,分别进行设置:

-私有成员(一般就是非函数成员)放到构造函数

-共享成员(一般就是函数)放到原型对象

-如果重置了prototype记得修正constructor 的指向

<script> // 自定义构造函数 function Person(name,age) { this.name = name; this.age = age; } // 将所有实例共享的属性和方法,都添加给原型对象 // Person.prototype.type = “human”; // Person.prototype.sayName = function () { // console.log(this.name); // }; // 直接使用一个对象字面量对 原型对象进行赋值 Person.prototype = { constructor : Person, // 需要手动 将 constructor 属性指向正确的构造函数 type : “human”, sayName : function () { console.log(this.name); } }; // 生成对象实例 var person1 = new Person(“Bob”,18); var person2 = new Person(“Mike”,20); person1.sayName(); console.log(person2.constructor); </script>