-1

私は比較的 Ja​​vaScript に慣れていませんが、Java を使用してオブジェクト指向プログラミングについて多くのことを学びました。javascript がオブジェクト指向ではないか、何か不足しています。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>
4

2 に答える 2

3

MDN にはOOP の優れた紹介があります。基本的に、の各インスタンスのmakedivとプロパティ: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';
};

インスタンス プロパティはコンストラクター内で作成され、インスタンス間の "共有" プロパティはプロトタイプに格納されます。ES6 では新しいclass構文が導入されています。これはおそらく使い慣れたものに近いものですが、その下ではコンストラクター関数を作成し、プロトタイプにプロパティを追加するだけです。

于 2014-06-11T20:18:35.330 に答える
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';
    }
}
于 2014-06-11T20:25:20.427 に答える