【问题标题】:IIFE and objects in JSJS 中的 IIFE 和对象
【发布时间】:2013-10-10 13:52:12
【问题描述】:

尝试这样做

/*Javeline Javascript simple forum API by Makerimages v1.0*/

(function(){

    Javeline={};
    alert("hia");
    Javeline.isNameSpace=true;
    alert("hia");
    Javeline.toString= function() { return "Javeline"; };

    Javeline.Application=Application();
    Javeline.Application.create();
    alert("appmade");

}());

function Application()
{
    function create()
    {
        Javeline.Application=this;
        alert(Javeline.Application);
    }
}

为什么代码不能运行Javeline.Application.create()

toString 也返回 = 之后该行的所有内容

【问题讨论】:

  • 为什么代码不能运行 你的意思是“为什么代码不能运行?”或者你不想运行create
  • 因为Application 不返回任何东西,当然也不是带有方法的对象。
  • 意思是“为什么代码不能运行?”通过未运行,我只想指定不起作用的部分是 javeline.Application.create()
  • 那我该如何解决呢?
  • /*Javeline Javascript simple forum API by Makerimages v1.0*/ (function(){ Javeline={}; Javeline.isNameSpace=true; Javeline.Application=Application(); alert(Javeline.Application) var a=Javeline.Application.create(); alert("a"); }()); function Application() { function create() { Javeline.Application=this; alert(Javeline.Application); } return this; } 使其警告 Javeline.Application 作为 [object Window]

标签: javascript class iife


【解决方案1】:

这可能就是你想要的:

Javeline.Application=new Application();

//....

function Application()
{
    this.create = function()
    {
        Javeline.Application=this;
        alert(Javeline.Application);
    }
}

只调用Application 将返回undefined,因为该函数没有返回语句。用new 关键字调用它会给你一个新对象。但是,要将函数 create 作为属性添加到这个新对象,您必须在 create 内将其声明为 this 的属性。

【讨论】:

  • 在 ^ 文件 /*Javeline Javascript simple forum API by Makerimages v1.0*/ (function(){ Javeline={}; Javeline.isNameSpace=true; Javeline.Application= new Application(); }()); function Application() { this.text="awd"; this.create = function() { Javeline.Application=this; } } 和另一个 .js 文件 App=Javeline.Application.create(); alert(App.text); 中执行此操作,这两者都由 index.html 组合在一起
  • index.html : <html> <head> <title>Javeline Beginning</title> </head> <body> <script type="text/javascript" src="libs/core/JavelineCore.js"></script> <script type="text/javascript" src="App.js"></script> </body> </html> 未显示警报
猜你喜欢
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-13
  • 2017-05-06
  • 1970-01-01
  • 2020-06-03
相关资源
最近更新 更多