javascript call apply prototype

本文详细介绍了JavaScript中call与apply方法的区别与使用场景。通过具体示例对比了两者如何改变函数内部this指向,并展示了如何利用call实现继承。适合初学者理解这两个方法的基本概念。

 

 

 

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>

 

 

 

 

 

 

 


   

转载于:https://www.cnblogs.com/watercaltrop/p/4165241.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值