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>

人.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

仅使用一个参数 (12) 调用两个构造函数。调用 person 时,将 12 作为 name 参数传递。


回应评论

不是传递参数列表,而是传递单个对象参数,并在最顶层对象的构造函数中混合参数对象:

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 回答