JavaScript 変数は関数スコープです。外側のスコープから内側のスコープ (つまり"function" )に属する変数にアクセスすることはできません。
そのようなアクセスが必要な場合は、それぞれの変数部分を外側のスコープにする必要があります。
var myTree = function() {
var myarray = [];
this.prep = function (variable) {
myarray.push(variable);
};
}
オブジェクトをネストしたシナリオでは、非常に似ています。
var myTree = {
myarray: [],
prep: function (variable) {
this.myarray.push(variable);
}
}
唯一の違いは、this
キーワードの使用です。
コンストラクター ( ) ではなく、オブジェクト リテラル構文 ( )を使用してオブジェクトを定義すると、定義されたすべてのプロパティが既定で "public" になります。obj = {prop: value}
function Obj(value) { this.prop = value; }; obj = new Obj(value);
そのオブジェクトで関数を呼び出すとthis
、それぞれのオブジェクト インスタンスを指します。
外部から「内部スコープ」変数にアクセスすることは依然として不可能です。それを回避する方法はありません。
一般的に言えば、構築したオブジェクトのプロパティにアクセスできます。関数のローカル変数にアクセスすることはできません (ネストされた関数の内部からを除く)。