日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

用JAVASCRIPT实现静态对象、静态方法和静态属性

發布時間:2025/4/16 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用JAVASCRIPT实现静态对象、静态方法和静态属性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Javascript語言的面向對象特征很弱,其他面向對象語言在創建類時只要使用關鍵字static即可指定類為靜態類,Javascript沒有提供static這樣的關鍵字,要讓Javascript也具有“靜態”特性只有靠一些“奇技淫巧”了。

代碼中列舉了兩種靜態方法/屬性的實現方式,一種是靜態類的靜態方法和屬性,另一種是非靜態類的靜態方法和屬性,代碼說明都寫在每行的代碼注釋里,這里就不重復了。

?
1 /****************************************
?
1 * 方法一
?
1 * 類、方法、屬性都為靜態類型
?
1 * 不能創建實例
?
1 *****************************************/
?
1 var Time = {
?
1 today: ‘2009-3-8′,
?
1 weather: ‘rain’,
?
1 show: function() {
?
1 alert(‘Today is ‘ + this.today);
?
1 }
?
1
?
1
?
1 //靜態對象可直接使用,無需創建實例
?
1 alert(‘It is ‘ + Time.weather + ‘ today.’);
?
1 Time.show();
?
1
?
1 //下面的代碼會出錯,因為靜態類不能創建實例
?
1 //var t = new Time();
?
1 //t.show();
?
1
?
1 /****************************************
?
1 * 方法二
?
1 * 普通對象,同時擁有靜態和非靜態屬性、方法
?
1 * 可以用實例化
?
1 * 注意:
?
1 *?? 1.靜態方法/屬性使用類名訪問
?
1 *?? 2.非靜態方法/屬性使用實例名訪問
?
1 *****************************************/
?
1 function Person(name) {
?
1 //非靜態屬性
?
1 this.name = name;
?
1 //非靜態方法
?
1 this.show = function() {
?
1 alert(‘My name is ‘ + this.name + ‘.’);
?
1 }
?
1 }
?
1 //添加靜態屬性,人都是一張嘴
?
1 Person.mouth = 1;
?
1 //添加靜態方法,哇哇大哭
?
1 Person.cry = function() {
?
1 alert(‘Wa wa wa …’);
?
1
?
1 //使用prototype關鍵字添加非靜態屬性,每個人的牙可能不一樣多
?
1 Person.prototype.teeth = 32;
?
1
?
1 //非靜態方法必須通過類的實例來訪問
?
1 var me = new Person(‘Zhangsan’);
?
1 //使用非靜態方法、屬性
?
1 me.show();
?
1 alert(‘I have ‘ + me.teeth + ‘ teeth.’);
?
1 //使用靜態方法、屬性
?
1 Person.cry();
?
1 alert(‘I have ‘ + Person.mouth + ‘ mouth.’);
?
1
?
1 2 3 var p=new Person("x"); ????alert(p.mouth);//回顯示未定義 ????p.cry();//會顯示Uncaught TypeError: Object #<person> has no method 'cry'</person>
?
1 可以發現,實例對象沒法訪問類的靜態方法和屬性。需要訪問只能使用類名
?
1
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <pre class="brush:java;"><span style="color:#333333;">function Person(name){ ????????this.name=name; ????????this.show=function(){ ????????????alert("My Name is "+this.name); ????????}; ????}; ????? ????Person.mouth=1; ????Person.cry=function(){ ????????alert("wa wa"); ????} ????Person.prototype.teeth=32; ????? ????? ????var p=new Person("x"); ????alert(Person["mouth"]);//1 ????p["show"]();//My name is x</span></pre><br><br>
?
1
?
1 在Jquery中可以這樣使用對象的靜態方法和屬性:
?
1 2 3 <pre class="brush:java;">var arr=new Array(); ???arr["push"]("x"); ???alert(arr["length"]);//1</pre>歡迎大家補充討論,共同進步!
?
1
?
1
?
1
?
1

總結

以上是生活随笔為你收集整理的用JAVASCRIPT实现静态对象、静态方法和静态属性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。