javascript - JS OO 基础知识以及为什么这不起作用?

标签 javascript oop

显然我无法理解如何在 JS 中使用简单的 OO 模式。希望有人能给我一个提示,我哪里出错了。

这是一个简短的测试。当加载到浏览器中时,开发控制台会显示两件事:

  1. 未定义作为Element.Display的值和

  2. 因此,对 Board.Display 的分配明显失败

有趣的细节:Element 的调试输出确实包含Display...

我的问题:为什么这不起作用?

<小时/>

文件“test.html”:

<html lang="en">

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript" src="test.js"></script>
    </head>

    <body>
        Hello world!
    </body>
</html>

文件“test.js”:

Element: {
    Display = function() {
        // declare something
        // do something
    } // Element.Display
}; // Element

var Board = function() {
    // debug output
    console.log(Element);
    console.log(Element.Display);
    // declare something
    Display: new Element.Display();
    // do domething
}();
<小时/>

上面的例子在 jsfiddle.net: Example

最佳答案

元素:是一个标签

您想要将一个对象分配给一个变量:

元素=

不过,您应该先声明变量。

var 元素 =

<小时/>

然后我们就有了这个。

Display = function() {
    // declare something
    // do something
} // Element.Display

在解决最后一个问题之前,它是有效的(因为它是对 block 内全局的函数赋值)。

解决该问题后,它就会变成错误。

在对象字面量内的属性名称和属性值之间使用 :

<小时/>

你的代码的后半部分也有问题。

var Board = function() {
    // Also a label
    Display: new Element.Display();

    // there is no return statement in this function
    // so you are assigning undefined to Board
}();

关于javascript - JS OO 基础知识以及为什么这不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21727437/

相关文章:

javascript - Extjs Grid 只渲染第一行

python - 继承 : transform a base class instance to a child class instance

java - 如何通过对象传递访问另一个泛型类中的类的属性?

php - DDD 中实体之间的关系

c++ - 如何引用父类(super class)中定义的类?

javascript - .show ('slide' 期间的 jQuery 动画高度)

javascript隐藏所有与文本输入搜索框内容不对应的客户端

javascript - IE : Unexpected call to method or property 中的 jQuery 错误

oop - Fortran OOP 通用

javascript - 如何在 TIDHttp (indy) delphi 上执行 javascript 函数?