function Book() {
this.setQuantity = function(numBooks:Number):Void {
this.books = numBooks;
};
this.getQuantity = function():Number {
return this.books;
};
this.getTitle = function():String {
return "OK";
};
this.addProperty("bookcount", this.getQuantity, this.setQuantity);
this.addProperty("bookname", this.getTitle, null);
}
var myBook = new Book();
myBook.bookcount = 5;
trace(myBook.bookcount+"+"+myBook.bookname);
这是关于Object类addProperty方法的一个例子;
我的问题不是这个方法的使用,问题是
this.books 中的books是一个未定义的属性,为什么也可以正常使用。
小弟是半路出家,基础不是很好,请高手指教!
感谢!
问问上看到你的更新,就进来了.之类的知识包括你前两天问我的.都是些非专业人员应该很少用到的.
.books 在里面相当于一个局部变量,在类里通常变量称为属性,函数称为方法,变量不是随地都可以创建的吗?
再看下面的代码:是个类文件.
class Book {
var books:Number;
function set bookcount(numBooks:Number):Void {
this.books = numBooks;
}
function get bookcount():Number {
return this.books;
}
function get bookname():String {
return "OK";
}
}
与上面你的代码是等效的,帮助内容也介绍了 第二行 var books:Number; 这里是先申明了变量.整段代码就是存取器设置.有没先学习下类知识呢?
再谈下__resolve属性
使用 __resolve 将未定义的方法调用重定向到名为 myFunction 的一般函数
先理解这个__resolve属性怎么运行的, 原始帮助内容'对用户定义的函数的引用,该函数在 ActionScript 代码引用未定义的属性或方法时调用'
意思是要用此属性,就先定义一个函数.这个定义的函数是怎么运行的呢?是当你通过代码引用未定义的属性或者方法时就自动调用了.比如myObject.xs(); 就是个未定义的方法
当你使用这个 未定义的方法时,就自动运行此段代码myObject.__resolve = function (b) {
return function () { this.myFunction(b); };
};
而函数里面的return function () { this.myFunction(b); }; 就是调用重定向到名为 myFunction 的一般函数 当然你也可以定义其它东西. 应该能懂了
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息