1. 程式人生 > 其它 >js高階_函式的prototype

js高階_函式的prototype

函式的prototype屬性

*①

每個函式都有一個prototype屬性,它預設指向一個Object空物件(即稱為:原型物件),比如我們新建了一個函式,沒有向函式的原型物件中新增屬性和方法時,這個prototype指向的Object空物件裡就沒有我們的屬性。

console.log(Date.prototype,typeof Date.prototype);
            function Fun(){
            }
            console.log(Fun.prototype);
這是Date物件的原型
這是自定義fun函式的原型(沒有屬性,因為我們並沒有給該函式原型物件裡新增屬性和方法)

*②

原型物件中有一個屬性constructor,它指向函式物件,如圖:

function Fun(){
            }
            console.log(Fun.prototype.constructor===Fun);//true
            console.log(Date.prototype.constructor===Date);//true

2 給原型物件新增屬性(一般都是方法)

*作用:函式(建構函式)的所有例項物件自動擁有原型物件中的屬性(或方法)

function Fun(){
                 this.asb=function(){
                console.log('word');
                }
            }
            //給原型物件新增屬性(一般是方法) ===>例項物件可以訪問
            Fun.prototype.sayhello=function(){
                console.log('hello');
            }
            //例項
            var fun=new Fun();
            //呼叫原型中的方法
            fun.sayhello();

最後輸出結果為hello

這時候輸出建構函式的原型物件可以看到我們剛剛新增的那個方法
console.log(Fun.prototype);