浪费内存
<script> // 自定义构造函数 // function Person(name,age) { // this.name = name; // this.age = age; // // this 内部的 type 属性值是不变的 // this.type = “human”; // // 每个对象的 sayName 方法也是一样的 // this.sayName = function () { // console.log(this.name); // }; // } // 判断各自的方法是否是同一个函数 // console.log(person1.sayName === person2.sayName); // 解决方法1: 将公共的函数提取到构造函数之外 // function sayName() { // console.log(this.name); // } // // 问题:如果有多个公共函数,需要在外部创建多个函数,可能会造成命名冲突 // function sayAge() { // console.log(this.age); // } // function Person(name,age) { // this.name = name; // this.age = age; // // this 内部的 type 属性值是不变的 // this.type = “human”; // // 每个对象的 sayName 方法也是一样的 // this.sayName = sayName; // this.sayAge = sayAge; // } // 解决方法第2种:将多个公共的函数封装到一个对象 var fns = { sayName : function () { console.log(this.name); }, sayAge : function () { console.log(this.age); } }; function Person(name,age) { this.name = name; this.age = age; // this 内部的 type 属性值是不变的 this.type = “human”; // 每个对象的 sayName 方法也是一样的 this.sayName = fns.sayName; this.sayAge = fns.sayAge; } // 生成对象实例 var person1 = new Person(“Bob”,18); var person2 = new Person(“Mike”,20); // person1.sayName(); console.log(person1.sayName === person2.sayName); console.log(person1.sayAge === person2.sayAge); </script>