0

我目前正在使用以下模式来创建要使用的 JS 模块。但是,我不知道在第一种风格和第二种风格中这样做是否有任何区别或任何好处。

第一种方式

var UI = UI || {};
(function () {
var BtnShape = function (x, y, width, height, size, color, text)
{
    this.initialise(x, y, width, height, size, color, text);
}
var p = BtnShape.prototype;

    p.isEnabled = false; //<--------------
    p.initialise = function (x, y, width, height, size, color, text)
    {}
UI.BtnShape = BtnShape;
})();

第二种方式

var UI = UI || {};
(function () {
var BtnShape = function (x, y, width, height, size, color, text)
{
    this.initialise(x, y, width, height, size, color, text);
}
var p = BtnShape.prototype;

    p.initialise = function (x, y, width, height, size, color, text)
    {
            this.isEnabled = false; //<---------------
    }
UI.BtnShape = BtnShape;
})();
4

3 回答 3

3

第一种方式:isEnabled将是false,无论你是否打电话initialise()

第二种方式:isEnabled只有false当你打电话时才会这样做initialise()undefined否则。

于 2012-12-06T17:05:59.737 回答
3

isEnabled我在这里可以看到的唯一区别是设置属性的顺序。通过将属性嵌套isEnabled到初始化函数中,您需要在具有任何值initalise之前运行该过程。isEnabled我假设你会在做任何事情之前运行初始化函数,但如果你不这样做,那isEnabled将是空的。

于 2012-12-06T17:07:42.920 回答
1

第一种方式,默认情况下未启用(但未定义)

// After all your code
var x= BtnShape.prototype;
// Here x is not enabled . If you want to enable it, you need to do it separately like below.
p.isEnabled = true;

第二种方式,当你初始化对象时,默认情况下它变为 false。除非,你初始化,如果你初始化,它变成拨号。您需要单独启用它。

var y =BtnShape.prototype;
// Here if you don't initialize the object y, then isEnabled is undefined. 
于 2012-12-06T17:12:57.507 回答