这两种声明JS属性的方式之间的区别

时间:2012-12-06 16:59:51

标签: javascript

我目前正在使用以下模式来创建要使用的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;
})();

3 个答案:

答案 0 :(得分:3)

第一种方式:isEnabledfalse,无论您是否致电initialise()

第二种方式:isEnabled只有在您拨打falseinitialise()时才会undefined

答案 1 :(得分:3)

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

答案 2 :(得分: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.