flash里面原型和继承的简介
当你创建一个函数,你还可以创建一个“原型”的功能。即使是原型
没有明确定义,它的存在是一个“模板”的功能,任何新的实例,功能。
当你想将属性添加到新实例的功能,你可以明确地定义这些
使用“原型”的属性。例如myFunction.prototype.y =“V”;
现在我们已经定义一个属性,Y的值“V”。
这可以继承的属性和值的任何新功能的实例:
/ /定义一个函数;
函数myFunction(一){
this.a =A̶;
}
/ /这个函数用new操作符创建一个实例;
VAR myNewFun = myFunction()的;
/ /定义原型,并创建一个属性'X','Y','Z'的原型;
myFunction.prototype.x =“创建”;
myFunction.prototype.y =“a”的;
myFunction.prototype.z =“句子”;
现在访问这些属性通过新的myFunction的,即“myNewFun的。
无功功率输出= myNewFun.x +“”+ myNewFun.y +“”+ myNewFun.z;
输出=“创建了一句”
这里发生了什么,Flash搜索myNewFun“的属性'X'。它没有找到它,因为
我们并没有明确表示它在该实例中,所以到原来的功能“myFunction的”
没有发现它的存在,所以它的原型,并发现它,并将其值设置为输出。
同样的过程发生,y和z和它们的值被添加到“输出”。如果一个值被发现在
新的实例precedance的多值的功能本身或它的原型。这就是所谓的“阴影”
的值掩盖了另一个价值链中的深。
这个过程产生了“秩序优先”的概念,在每个部分的物业
函数链。这个顺序是;
myNewFun - 原myFunction的 - myFunction.prototype。
例如,假设我们定义了如下的函数链;
myFunction.prototype.x =“创建”;
myFunction.prototype.y =“a”的;
myFunction.prototype.z =“句子”;
函数myFunction(){
this.x =“请”;
this.y =“我的阴影由y在”myNewFun“;
}
VAR myNewFun = myFunction()的;
myNewFun.y =“影子”;
无功功率输出= myNewFun.x +“”+ myNewFun.y +“”+ myNewFun.z;
输出=“请了一层阴影句”;
这是如何创建的句子:
x被没有发现在myNewFun,。
x是在myFunction的,所以这个值(“”)中插入输出和原型中的x值(“创建”)的阴影。
y是发现了阴影在myNewFun所以“”被选择,而不是在myFunction的或在其原型的y值y值。
z是没有找到在myNewFun或myFunction的,但这样的“句子”被添加到“输出”被发现在myFunction.prototype。
属性也可以有值的方法,这些方法可以是函数。
例如
:函数myCirc(){
this.x = myArea;
}
:功能myArea(R){
返回R * R * 3.1415;
}
一个:=新myCirc();
无功功率输出= a.x(12);
输出= 452.376
因此,这里发生了什么?
1.var输出= a.x(12);
/ /的说法,12日,在'A'与'X'的属性。
2。 'a'是一个变量,它引用的一个新实例“myCirc”。
3。该物业的“x”没有明确定义为“A”的参考'一'。
/ /我可以写:AX =安勤,但没有找到X的。
4。原来的函数myCirc确实含有'X'的属性。(“this.x')
5。此属性是一个的方法,myArea和计算领域的一个圆,半径为12。
因此,这里是路径的说法'12'。
没有明确定义的属性'X'a'的存在。
因此,原有的“myCirc检查的x属性。
它已被定义在myCirc:'this.x',它是一个函数 - myArea。
所以输出= myArea:返回12 * 12 * 3.1415 = 452.376。
(责任编辑:卓想动画http://www.zxgzs.com)