通过对javascript的几种函数的运行分析,得出结论:
javascript 的继承实际上是通过对对象进行初始化来模拟的。
代码一:实现继承的一种方法
对比:
为什么呢?
原因是第一种方法执行Person.call(Me)时,将Person里的this指定为Me,然后执行Person方法里的代码
显而易见,this.say=function(){alert("Name")};这句话对Me添加了方法。让Me对象具有了say的行为。
而PersonA();时,要执行PersonA里面的代码,此时this对象代表window,所以window获得了say行为。
而第二种方法执行Person内部的代码,所以并没有给Me添加行为,调用Me.say()自然出错。
如此看来通过Call,Apply,for(property in object),prototype等方法实现继承时,只是一种模拟继承的
方式。具体过程就是对一个对象动态添加函数,属性。
Person.call(Me);是对Me添加Person的属性方法,哪么function Person(){alert("Name");}面对的对象是谁呢?
2015年全国职称计算机考试教材(2007模 .. 定价:¥225 优惠价:¥213 更多书籍 | |
全国职称计算机考试速成过关系列套装:W .. 定价:¥133 优惠价:¥133.0 更多书籍 |