call方法: 调用一个对象的一个方法,以另一个对象替换当前对象。

apply方法: 应用某一对象的一个方法,用另一个对象替换当前对象

call与apply的不同就是call传的值可以是任意的,而apply传的剩余值必须为数组。

//---------------------------------------方法一--------------------------------------------------------

<script language="javascript">
<!--
        function Class1() {
           
            this.name = "class1";
            this.aaa = "aaa";
            this.showNam = function() {
                alert(this.name);
            }
        }

        function Class2() {
            this.name = "class2";
        }

        var c1 = new Class1();
        var c2 = new Class2();
        //c1.showNam();
        c1.showNam.call(c2);//对象置换,针对方法而言
        c1.aaa.call(c2);//错误,只能针对方法继承,属性不支持
-->
</script>

//--------------------------------------方法二---------------------------------------------------------

 

<script type="text/javascript">
function People(){
 this.type = '人';
}
People.prototype = {
 getType:function(){
  console.log(this.type);
 }
};

function Student(name, age){
 People.call(this, arguments);
 var fn,sfn=this.constructor.prototype;
 console.log(sfn);
 for(fn in People.prototype){
  if(!sfn[fn]){
   sfn[fn] = People.prototype[fn];
  }
 }
 this.name = name;
 this.age = age;
 this.type = '超人';
}
Student.prototype = {
 getAge:function(){
  console.log(this.age);
 },
 getName:function(){
  console.log(this.name);
 }
};
var student = new Student('lily', 100);
student.getAge();
student.getName();
student.getType();


</script>

 

 

 

 

 

 

 


   

posted on 2014-12-15 16:56  watercaltrop  阅读(241)  评论(0编辑  收藏  举报