目前我们的方法是在构造函数内部创建的,也就是构造函数每执行一次就会创建一个新的getName方法
也是所有实例的getName都是唯一的
这样就导致了构造函数执行一次就会创建一个新的方法
执行1000次就会创建1000个新的方法,而1000个方法都是一摸一样的
这是完全没有必要的,完全可以使所有的对象共享同一个对象
基本写法
function Fun(name,age){this.name = name;this.age = age;this.getName = function(){return this.name}}var obj1 = new Fun("孙悟空",18);console.log(obj1.getName()); // 孙悟空// 判断是否是同一个对象console.log(obj1.getName == obj2.getName); // false
改进写法
function Fun(name, age) {this.name = name;this.age = age;this.getName = fun;}// 将方法写到全局作用域中function fun() {return this.name;}var obj1 = new Fun("孙悟空", 18);console.log(obj1.getName());var obj2 = new Fun("猪八戒",38);console.log(obj2.name);console.log(obj1.getName == obj2.getName);// 判断是否是同一个对象console.log(obj1.getName == obj2.getName); // true
