javascript中的繼承二 call()和apply()

前面的繼承一中簡單的描述了javascript的原型鏈繼承屬性拷貝javascript

這裏簡單的用apply()和call()來實現 javascript中的繼承java

Object.apply(obj,agrs);數組

apply方法能劫持另一個對象的方法,繼承另一個對象的屬性
obj:這個對象將代替Function類裏this對象
args:這個是數組,它將做爲參數傳給Function(args-->arguments)app

這兩個方法基本上是一個意思,區別在於 call 的第二個參數能夠是任意類型,而apply的第二個參數必須是數組,也能夠是argumentsthis

<script type="text/javascript">
        //人類
        function Person(name,age){
            this.name = name;
            this.age = age;spa

            this.say = function(){
                console.log("Everyone can say !");
            }rest

            this.eat = function(){
                console.log("you can eat !");
            }
        }
        //學生類
        function Student(name,age){
            Person.apply(this,arguments);對象

            this.learn = function(){
                console.log("Interesting ?");
            }
        }繼承

        var s1 = new Student("lee",14);ip

        console.log(s1.name);
        s1.say();
        s1.eat();
        s1.learn();
        console.log("===============分割線===============");
        //小學生類
        function S_Student(name,age,sexy){
            Student.apply(this,arguments);
            this.sexy = sexy == 1 ? "男孩" : "女孩";

        }

        var s_s1 = new S_Student("Tom",10,2);
        console.log(s_s1.name);
        s_s1.eat();
        s_s1.say();
        s_s1.learn();
        console.log(s_s1.sexy);
    </script>

運行結果:

相關文章
相關標籤/搜索