AS3原型 - 它们只是静态变量吗?

时间:2011-09-13 09:44:13

标签: actionscript-3

  

对类或函数对象的原型对象的引用。该   prototype属性自动创建并附加到任何类   或您创建的函数对象。这个属性是静态的   特定于您创建的类或函数。例如,如果   你创建一个类,原型属性的值是由共享的   类的所有实例,只能作为类属性访问。   您的类的实例无法直接访问原型属性。

     

类的原型对象是该类的特殊实例   提供了一种在a的所有实例之间共享状态的机制   类。在运行时,在类实例上找不到属性时,   委托,它是类原型对象,检查它   属性。如果原型对象不包含该属性,则   进程继续进行原型对象的委托签入   层次结构中的连续更高级别,直到Flash Player或者   Adobe Integrated Runtime查找属性。

     

注意:在ActionScript 3.0中,原型继承不是主要的   继承机制。类继承,驱动   在类定义中继承固定属性,是主要的   ActionScript 3.0中的继承机制。

所以,从中我得到的印象是原型只是静态变量..我是对的吗?

1 个答案:

答案 0 :(得分:7)

不完全是,作为原型实现的函数仍然作为实例方法执行。在静态功能中,您无权访问this

此外,它并不意味着将原型值设置为某个值,而是为每个实例设置值。它只是后备值,如果该类的对象没有明确设置它。

var o1:Object= {};
var o2:Object= {};
Object.prototype.foo = "foo";

o1.foo = "bar"

trace(o1.foo) // bar
trace(o2.foo) // foo