JS靜態變量和靜態函數


 

本文鏈接:https://blog.csdn.net/u012790503/article/details/46278521

function A(){this.id = "我是AA"}            //   在構造函數外定義的都是所有對象共享的
A.id = "我是A";
A.sayId = function(){alert(A.id);}
A.sayId();

如上,在構造函數外用函數名定義的屬性或者方法,可以也只可以通過函數名來訪問,這和C++基本一樣。

輸出

 

試圖訪問非靜態變量時

function A(){this.id = "我是AA"}            //   在構造函數外定義的都是所有對象共享的
A.id = "我是A";
A.sayName = function(){alert(this.id);}
A.sayName();

 

輸出

 

說明訪問不了。

再看看this是什么

 

 

那么如果用prototype呢?

function A(){this.id = "我是AA"}            //   在構造函數外定義的都是所有對象共享的
A.prototype.id = "我是A";
A.prototype.sayName = function(){alert(this.id);}
a = new A();
a.sayName();

輸出

 

說明:

1、輸出"我是AA"是因為"我是A"是在之后賦值的,把"我是A"覆蓋了。

2、prototype指向的是一個Object對象,注意它是一個對象,當使用prototype時(或者是定義函數后),會產生一個Object對象,等同於 object = new Object();

3、通過prototype添加的屬性和方法不是靜態的,只能通過對象來訪問。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM