![](/img/trans.png)
[英]If comments are safe, then why doesn't `x = 0; x+/*cmt*/+;` or `var f/*cmt*/oo = 'foo';` work?
[英]JS OO basics and why doesn't this work?
显然我无法理解如何在JS中使用简单的OO模式。 希望有人可以给我一个提示,我要去哪里错了。
这是一个简短的测试。 当加载到浏览器中时,开发控制台将显示两件事:
undefined
为Element.Display
和
由于这个原因,对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上的示例: 示例
Element:
是标签 。
您想要将对象分配给变量:
Element =
您应该先声明该变量。
var Element =
然后我们有这个。
Display = function() {
// declare something
// do something
} // Element.Display
在解决最后一个问题之前,它是有效的(因为这是对块内全局变量的功能分配)。
解决该问题后,它将变成错误。
在对象文字内部的属性名称和属性值之间使用:
。
您的代码的后半部分也有问题。
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
}();
这可以帮助澄清一些事情:
使用名为“ Display”的函数将Element声明为对象 。
var Element = {
Display : function() {
console.log('display something');
}
};
董事会声明为调用元素对象的显示功能的功能 。
var Board = function() {
return Element.Display();
}();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.