首頁  >  文章  >  web前端  >  JavaScript子類別用Object.getPrototypeOf去呼叫父類別方法解析_javascript技巧

JavaScript子類別用Object.getPrototypeOf去呼叫父類別方法解析_javascript技巧

WBOY
WBOY原創
2016-05-16 17:10:33851瀏覽

每個function有prototype屬性,稱為原型。每個物件也有個原型,Firefox/Safari/Chrome/Opera 中可以透過__proto__來訪問,IE6/7/8中沒有提供相關介面。

複製程式碼 程式碼如下:

function Person(){


function Person(){


function Person(){
this function(){}
}
Person.prototype.method2 = function(){}

function Man(){}
Man.prototype = new Person();

Man.prototype.m1 = function(){}
Man.prototype.m2 = function(){}

var m = new Man(); for(var a in m.__proto__){

    alert(a);
}


複製程式碼


程式碼如下:


function Person(){


function Person(){


function Person(){
this function(){alert(1)}
}
Person.prototype.method2 = function(){alert(2);}

function Man(){
   this.m1 =  this.m1 = function(){
        Object.getPrototypeOf(this).method1();
    }
}
Man.prototype = new Person(); prototype.m2 = function(){     Object.getPrototypeOf(this).method2();

}

 
var man = new Man()

man.m1( ); man.m2(); 子類別Man中掛在this上的m1方法中呼叫父類別Person中掛在this上的method1,掛在prototype上的m2方法呼叫父類別prototype上的method2。 以上可以看出物件原型不但包含其建構器prototype上的屬性,也包含建構器中this上的屬性。當然由於JavaScript中上下文的原因,父類別中的this不能在子類別中無法很好的自動轉換,需要一些技巧完成。
Java中是這樣的




複製程式碼


程式碼如下:


package b1; 🎜>
class Person {
    private String name;

    Person(String name) {
   1() {
        System.out.println(this.name);
    }
}
class Man extends Person{

   🎜>    }   
    public void m1() {
        super.method1();         Man man1 = new Man("Jack");
        man1.m1();
    }
}
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn