javascript函数中的访问字段
问题描述:
我无法访问函数定义中的字段(变量)。我的问题是与此代码: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)