我無法訪問函數定義中的字段(變量)。我的問題是與此代碼:javascript函數中的訪問字段
<script>
function test(){ var book= [];}
var arrs = test();
alert(arrs.book);
</script>
它給了我'未定義',爲什麼?我希望它是一個空值。有沒有什麼辦法可以在arrs
上訪問這個book
數組變量?
我無法訪問函數定義中的字段(變量)。我的問題是與此代碼:javascript函數中的訪問字段
<script>
function test(){ var book= [];}
var arrs = test();
alert(arrs.book);
</script>
它給了我'未定義',爲什麼?我希望它是一個空值。有沒有什麼辦法可以在arrs
上訪問這個book
數組變量?
arrs
未定義,因爲test()
不返回任何內容。所有的函數都是在局部聲明一個變量,然後結束,所以局部變量不在範圍之內,也沒有任何反應。
基礎上使用,它看起來像你希望你的函數可能返回一個對象?:
function test() {
return { book: [] };
}
或者這個功能本身應該構造一個對象,你的意思是用new
叫它:
function test() {
this.book = [];
}
var arrs = new test();
就像Carcigenicate說的,你錯過了test()中的return語句。
function test(){
var book= [];
// missing return...
return book;
}
var arrs = test();
alert(arrs);
現在就試試。
// old way
function Test1() {
this.books = ['t1']
}
var t1 = new Test1()
alert(t1.books)
//es6 class
class T2 {
constructor() {
this.books = ['t2']
}
}
var t2 = new T2()
alert(t2.books)
// plain object
var t3 = {
books: ['t3']
}
alert(t3.books)
// static field
function T4() {}
T4.prototype.books = []
var t4a = new T4(),
t4b = new T4()
t4a.books.push('t4')
alert(t4b.books)