你的位置:首页 > 软件开发 > Java > javascript中的模式解析——原型模式

javascript中的模式解析——原型模式

发布时间:2015-10-23 22:00:05
理解原型模式,首先要理解prototyoe(这个单词翻译 原型)属性,《javascript高级程序设计》书中描述到——我们创建的每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型 ...

理解原型模式,首先要理解prototyoe(这个单词翻译 原型)属性,《javascript高级程序设计》书中描述到——我们创建的每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。

我在上一篇构造函数模式所说的,我们构建了一个一个Person函数,然后通过new一个person函数来创建了person1实例,person2实例,既然每个函数都有一个prototype属性,那么我有几个问题想要弄明白:

  1. person1的prototype属性指向哪个对象?
  2. Person对象也是我们创建的一个函数,它有没有prototype属性,如果有,它的prototype属性又指向哪?

第一个答案,person1的prototype属性指向Person对象 (这个应该能理解吧)

那么第二个问题看起来就有些奇怪,Person对象的prototype的属性指向哪啊?它可以我们自定义的,可不是一个实例。答案是Person对象的prototype属性指向Person对象(如果我没理解错的话)

这听起来是挺别扭的,函数的原型对象是它本身,但是,它的真实构造是这样的:

当我们创建了一个自定义的构造函数(假设为Person)后,自定义构造函数的prototype属性指向原型对象,但是每个原型对象中有一个constructor(翻译 构造函数)属性,这个属性指向我们的自定义函数。说到这里,大家就应该能理解为什么我说Person对象的prototype属性指向它本身。我给大家举个形象生动的例子啊(仅供参考)。Person是一个人,他的左手叫prototype,有一天他想找他的原型对象,他把左手伸出去找啊找啊的,一下抓到一个匹配的原型对象的右手(constructor),他顺着原型对象的右手往上看原型对象的脸,咦,这不是我么?person1有一天也想找原型对象了,他也伸出他的左手(prototype)去找啊找啊,抓到了一个匹配的原型对象的右手,他也顺着原型对象的右手往上看,咦,这不是Person么!

哈哈,希望能逗大家一笑,那么我有一个问题

   3.prototype属性有什么用?

function Person() {}Person.prototype.name="guoshiwei";Person.prototype.age=23;Person.prototype.sayName=function(){    alert(this.name)};var person1=new Person();person1.sayname(); //"guoshiwei"var person2 = new Person();person2.sayName() //"guoshiwei"alert(person1.sayName == person2.sayName);  //true

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:javascript中的模式解析——原型模式

关键词:JavaScript

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。