总结:构造函数与原型的组合 是一种获得广泛认可的创建自定义类型的方法。 也是上面这些方法中的最优方法。 /*************************************************************************************************************/ 其实上面的创建对象的方法已经很多了,但是还是有可能出现一些比较特殊的场景,需要继续的优化。 动态原型模式: 它是构造函数与原型组合 的一种优化。对于那些共用的属性和方法,如果初始化之后,就不必再重复初始化,提高效率。 复制代码 代码如下: function Student(name, age) { this.name = name; this.age = age; if ((typeof this.sayName) != "function") { Student.prototype.sayName = function () { alert(this.name); } } } var stu = new Person("ming", 20); //alert(stu instanceof Student); stu.sayName(); var stuNew = new Person("hong", 18); //alert(stuNew instanceof Student); stuNew.sayName();
当创建多个student对象时,sayName 方法只会初始化一次。 最后还有一种很有用的创建对象的方式,就是稳妥构造函数。 稳妥构造函数模式: 在这个模式中会禁止使用this和new,所有对象没有公共的属性。只能读取变量的值,而不能修改。 复制代码 代码如下: ////稳妥构造函数模式 function Student(name, age) { var o = new Object(); o.sayName = function () { alert(name); } return o; } var stu = Student("ming", 21); stu.sayName();