Javascript调用嵌套函数

时间:2014-06-11 20:15:22

标签: javascript nested-function

我对javascript相对较新,但是从使用Java学到了很多关于OO编程的知识。要么javascript不是OO,要么我错过了什么。 Java的方法类似于javascripts函数,但是我注意到javascript函数也可以作为类对象而不仅仅是方法。如果一个函数可以成为一个对象,我很困惑,该对象是否应该具有可用的函数?

Javascript实施:

function Div() {

var div = document.createElement('div');

 function setSize(width,height){

    div.position = 'absolute';

    div.style.width = width + 'px';
    div.style.height = height + 'px';
    div.style.background = 'black';

    document.body.appendChild(div);


}

}

HTML脚本

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <script type="text/javascript" src="jWebKit.js"></script>

    <script>

        var div1 = new Div();
        div1.setSize(100,100); //Does Not Work Irritating all whom love Java...

    </script>
</body>
</html>

2 个答案:

答案 0 :(得分:3)

MDN有一个很好的introduction to OOP。基本上,为div的每个实例制作setSizeDiv属性:

function Div() {
    this.div = document.createElement('div');
}

Div.prototype.setSize = function(width,height) {
    this.div.style.width = width + 'px';
    this.div.style.width = height + 'px';
};

在构造函数中创建实例属性,&#34;共享&#34;实例之间的属性存储在原型上。 ES6引入了一种新的class语法,它可能更接近你习惯的语法,但在它下面只是创建一个构造函数并为原型添加属性。

答案 1 :(得分:1)

您的setSize方法未定义为此处类的成员,而是作为范围仅限于该函数的函数。

有许多方法和文档可以解释它是如何工作的,但是你可以用这种方式声明你的功能:

function Div() {// Acts as a class?

    this.div = document.createElement('div');
    this.setSize = function(width,height){
        this.div.style.width = width + 'px';
        this.div.style.width = height + 'px';
    }
}