0

私は JavaScript にかなり慣れていないので、慣れるためにチュートリアルを進めています。私は名前に 12 を取得し続けていますが、デフォルトの名前であるべきだと感じています (更新されていないため)。かなり基本的なものですが、エラーが見つかりません。また、require で間違った関数を使用していると確信していますが、それ以外の方法が正確にはわかりませんでした。

Person.js はサーバー上にあり、PersonEmployee.html はローカルにあることに注意してください。

PersonEmployee.html:

    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=7" />
        <title>Dojo Check</title>
        <script src="https://ajax.googleapis.com/ajax/libs/dojo/1.9.0/dojo/dojo.js"></script>
    <script>

    require(["http://www.pcs.cnu.edu/~wtaylor/Sandbox/Inheritance2/Person.js"], function(){
            var aPerson = new Person("Tommy", 12, "Da Hood");
        var emp = new Employee(12);
        alert(emp.name);
    });
        </script>
    </head>
    <body>
    </body>
</html>

Person.js:

dojo.declare("Person", null,{
    name: "John Doe",
    age: 0,
    address: "",
    constructor: function(name, age, address) {
        this.name = name;
    this.age = age;
    this.address = address;
    }
});

dojo.declare("Employee", Person, {
    id : 0,
    constructor: function(id) {
        this.id = id;
    }
});
4

1 に答える 1

1

コンストラクターの良い習慣は、その引数の変更を避けることです。これにより、他のクラスが元の値にアクセスできるようになり、そのクラスが他のクラスのビルディング ブロックとして使用されたときにうまく機能します。

http://dojotoolkit.org/reference-guide/1.9/dojo/_base/declare.html#default-constructor-chaining

両方のコンストラクターが 1 つのパラメーター (12) のみで呼び出されています。person が呼び出されると、name パラメータとして 12 が渡されます。


コメントへの返信

引数リストを渡す代わりに、単一のオブジェクト引数を渡し、一番上のオブジェクト mixin のコンストラクターにパラメーター オブジェクトを渡します。

var Person = dojo.declare("Person", null,{     
    constructor: function(params) {
        if(params)
            dojo.mixin(this, params);
    }
});

var Employee = dojo.declare("Employee", Person, {
    id : 0
});

var emp = new Employee({
    id: 12
});

http://dojotoolkit.org/reference-guide/1.9/dojo/_base/lang.html#dojo-base-lang-mixin

于 2013-08-07T19:45:53.907 に答える