6.2.3 原型模式
我们创建的每一个个函数都有prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。如果按照字面的意思来理解,那么prototype就是通过调用构造函数而创建的那个对象实例的原型对象。使用原型对象的好处是可以让所有对象实例共享它所包含的属性和方法。换句话说,不必在构造函数中定义对象实例的信息,而是可以将这些信息直接添加到原型对象中,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function Person(){} Person.prototype.name= "Tom" ; Person.prototype.age=29; Person.prototype.job= "Software Engineer" ; Person.prototype.sayName = function (){ alert( this .name); }; var person1 = new Person(); person1.sayName(); //"Tom"; var person2 = new Person(); person2.sayName(); //"Tom" alert(person1.sayName == person2.sayName); //true |
在此,我们将sayName()方法和所有属性直接添加到了Person的prototype属性中,构造函数变成了空函数。即便如此,也仍然可以通过调用构造函数来创建对象,而且新对象还会具有相同的属性和方法。但与构造函数模式不同的是,新对象的这些属性和方法是由所有实例共享的。换句话说,person1和person2访问的都是同一组属性和同一个sayName()函数。要理解原型模式的工作原理,必须新理解ECMAScript中原型对象的性质。
=================<< 请读者注意!不保证内容百分之百正确,有误请留言指教!^_^ >>=================
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步