3

所有,我对javascript OO不熟悉,在我做了一些实验之后,我对对象定义有些困惑,请帮助查看我的代码和下面的评论。谢谢。

    GlobalUtility = function() {
            this.templeteCode = "123";

            this.Init();
//why can not put this code here,
//there is an error says GetOriginalSource is not a function . 
//This is not like the classical OO constructor which can call any methods in class.
            this.Init = function() {
                var source=this.GetOriginalSource();
                alert(source + " is ok.");
            },//I found I can end this statement by , or ; Is there any difference between them?

            this.GetOriginalSource=function(){
                return "abc";
            };
            //this.Init(); putting this code here is ok .

        };
4

3 回答 3

3
  1. 您必须在调用它之前定义一个函数。
  2. javascript 中的分号是可选的。基本上,分号用于结束语句,而逗号用于处理对象。您可以尝试阅读这些文章JavaScript 变量定义:逗号与分号您是否建议在 JavaScript 中的每个语句后使用分号?

Javascript 可以用 oop 方式编写 *请参阅定义 javascript 类,但我建议使用Base.js,它会让您的生活更轻松。

您可能需要这个,但阅读起来并不那么有趣:) javascript 模式

于 2013-03-12T10:57:25.047 回答
1

试试这个:

GlobalUtility = function () {
            Init();


            this.templeteCode = "123";
            this.Init = Init;       
            this.GetOriginalSource = GetOriginalSource;

            //function declaration
            function Init() {
                var source = GetOriginalSource();
                alert(source + " is ok.");
            }
            function GetOriginalSource() {
                return "abc";
            }
};

您正在尝试调用尚未在运行时定义的函数。

于 2013-03-12T10:29:50.673 回答
0

this.GetOriginalSource=function(){将函数添加到对象。在这条线之前它不存在。但是你之前尝试调用它。

于 2013-03-12T10:12:00.947 回答