原創 Javascript類成員的作用域

2021-09-05 15:04:42 字數 1585 閱讀 6138

一、類的私有方法中訪問類屬性

1、私有方法訪問私有變數

這種訪問沒有什麼限制,因為都是私有,作用域相同。

function class1()

showname(); }

2、私有方法訪問類普通屬性

function class1()

showname(); }

可以看到在類中定義了乙個_this變數,其表示每個新建立的物件的例項,在私有方法中訪問類普通屬性時,就需要用_this.name來訪問.那麼在函式showname中的this是指什麼呢?document

物件!所以如果使用this.name來訪問將得到

undefined.那麼直接使用name呢?則會提示"

'name'未定義"!這樣對作用域的理解可能就清楚一點了.

3、私有方法訪問類靜態屬性

function class1()

showname(); }

class1.name = 'd@y'; // 類靜態屬性

可以看到類的私有方法訪問其靜態屬性與在類外部訪問其靜態屬性的方法一樣,都是使用類名.屬性名的方式.

二、類的公共方法訪問類屬性

1、公共方法訪問私有變數

function class1()

} 與私有方法訪問私有變數的方式一樣.

2、公共方法訪問類普通屬性

function class1()

} 公共方法與私有方法訪問類的普通屬性的方式是一樣的,都是訪問繫結到某個物件的屬性.

3、公共方法訪問類靜態屬性

function class1()

} class1.name = 'd@y'; 

與私有方法訪問類靜態屬性的方式一樣.

從上面的描述可以得到如下結論:類的公共方法和私有方法訪問類屬性或變數的方式是一致的!

三、類的靜態方法訪問類屬性

靜態方法不能直接訪問普通的類屬性或變數以及私有變數,只能訪問靜態屬性.

function class1(){}

class1.name = 'd@y';

class1.prototype.showname = function() // 靜態方法

四、訪問類的方法

以下例子**應該能較清楚的描述類的各種方法的訪問方式:

function class1()

this.showfirstname = function()

showname(); // 私有方法只能在類內部訪問 }

class1.lastname = 'y';

class1.prototype.showlastname = function()

var oclass1 = new class1();

oclass1.showfirstname(); // 公共方法通過類的例項訪問

class1.prototype.showlastname(); // 靜態方法直接使用類名作為限定符訪問

結論:實踐是檢驗真理的唯一標準!

Mat 類成員詳解(真正原創,非copy

為了搞定這個問題,opencv使用引用計數機制。其思路是讓每個 mat 物件有自己的資訊頭,但共享同乙個矩陣。這通過讓矩陣指標指向同一位址而實現。而拷貝建構函式則只拷貝資訊頭和矩陣指標,而不拷貝矩陣。123 456 mata,c 只建立資訊頭部分a imread argv 1 cv load ima...

非原創 C 類成員函式的過載 覆蓋和隱藏

題目 類成員函式的過載 覆蓋和隱藏區別描述正確的有?a 覆蓋是指在同乙個類中名字相同,引數不同 b 過載是指派生類函式覆蓋基類函式,函式相同,引數相同,基類函式必須有virtual關鍵字 c 派生類函式與基類函式相同,但是引數不同,會 隱藏 父類函式 d 函式名字相同,引數相同,基類無virtual...

python類的成員 Python類成員

乙個是乙個類屬性,另乙個是乙個例項屬性。它們是不同的,但是它們之間的關係密切相關,使得它們在時間上看起來一樣。它與python查詢屬性的方式有關。有層次結構。在簡單的情況下,它可能如下所示 instance subclass superclass object built in type 當你在這樣...