JS笔记—关于类的静态属性的继承(call方法的运用)

网上看了不少,感觉废话都太多,抓不住重点,下面单刀直入。

一、先弄清楚对于对象而言call()方法的语法

obj1.obj1's function.call(obj2,parameter1,parameter2,......)     

作用:让obj2代替obj1调用原本属于对象obj1的方法obj1's function,其中parameter1,parameter2......为调用obj1's function本身需要的参数。

要点:当obj1可省略,也就是说对于非对象的方法也可以用,只不过对于非对象的方法而言,用call没有什么意义,因为我们的初衷是改变对象方法中的this所指的实体。

二、利用call()实现类的静态属性继承

    普遍语法上讲,JS中并没有类(新出的Class可能是,但是不是经典语法),这里的“类”只是借用概念.

    下面先给例子

var class1 = function(x){
    this.a = x;
}

var class2 = function(x,y){
    class1.call(this,x);
    this.b = y;
}

var obj = class2(1,5);
console.log("obj.a:"+obj.a+",obj.b"+obj.b);

结果:
    obj.a:1,obj.b:5

   这样做的好处很明显,成功利用父类的构造函数,从而等价地实现了子类对于父类静态属性的继承,实现了代码重用。

  OK,完工!

猜你喜欢

转载自blog.csdn.net/weixin_40861847/article/details/81806985