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

aps*_*nce 4 actionscript-3

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

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

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

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

kap*_*pex 7

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

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

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

o1.foo = "bar"

trace(o1.foo) // bar
trace(o2.foo) // foo
Run Code Online (Sandbox Code Playgroud)