长处:办法不会从新创建
缺点:1. 所有的属性和办法都共享 2. 不克不及初始化参数
3.1 原型模式优化
然则作者可能是欲望能像应用通俗Array一样应用SpecialArray,固然把specialarray当成函数也一样能用,然则这并不是作者的本意,也变得不优雅。
- function Person(name) {
- }
- Person.prototype = {
- name: 'kevin',
- getName: function () {
- console.log(this.name);
- }
- };
- var person1 = new Person();
长处:封装性好了一点
缺点:重写了原型,损掉了constructor属性
3.2 原型模式优化
- function Person(name) {
- }
- Person.prototype = {
- constructor: Person,
- name: 'kevin',
- getName: function () {
- console.log(this.name);
- }
- };
- var person1 = new Person();
长处:实例可以经由过程constructor属性找到所属构造函数
缺点:原型模式该有的缺点照样有
长处:该共享的共享,该私有的私有,应用最广泛的方法
缺点:有的人就是欲望全部写在一路,即更好的封装性
- function Person(name) {
- this.name = name;
- if (typeof this.getName != "function") {
- Person.prototype.getName = function () {
- console.log(this.name);
- }
- }
- }
- var person1 = new Person();
留意:应用动态原型模式时,不克不及用对象字面量重写原型
解释锫为什么:
- function Person(name) {
- this.name = name;
- if (typeof this.getName != "function") {
- Person.prototype = {
- constructor: Person,
推荐阅读
【引自熊建刚的博客】媒介如不雅你已经对JavaScript异步有必定懂得,或者已经浏览过本系列的其他两篇文┞仿,那请持续浏览下一末节,若你还有困惑或者想懂得JavaScript异步机制与编程,可>>>详细阅读
本文标题:JavaScript深入之创建对象的多种方式以及优缺点
地址:http://www.17bianji.com/lsqh/35175.html
1/2 1