js 面向对象进阶之call apply

来源:互联网 发布:如何电脑共享手机网络 编辑:程序博客网 时间:2024/05/18 02:42

现在学习ext,发现要完成组建的复用,就必须要继承,此时js的面向对象就显得如此重要,先从最简单的继承开始

<script type="text/javascript">
/* function sayName(perfix) {
  alert(perfix);
  alert(this.name);
 }
 obj = new Object();
 obj.name = "222222222";
 sayName.call(obj, "111111111");
 
 */

 

//先输出1111111  再输出2222222      想想其中的原因

 

function classA(name) {
 this.name = name;
 this.showName = function() {
  alert(this.name);
 };
}
function classB(name) {
 classA.call(this, name);
}
objB = new classB("bing");
objB.showName();////说明classB继承classA的showName方法

 

//这个就类似于java的继承了,类似于super方法,子类使用父类的构造器

 

--------------------------------------------------

<script language="javascript">
/**定义一个animal类*/
function Animal(){
 this.name = "Animal";
 this.showName = function(){
  alert(this.name);
 }
}
/**定义一个Cat类*/
function Cat(){
 this.name = "Cat";
}

/**创建两个类对象*/
var animal = new Animal();
var cat = new Cat();

//通过call或apply方法,将原本属于Animal对象的showName()方法交给当前对象cat来使用了。
//输入结果为"Cat"
animal.showName.call(cat,",");
//animal.showName.apply(cat,[]);
 //其实call 和apply 用法基本上就是参数的传递不同,当然深入后还是有细微的差距,留给读者慢慢体会吧

</script>