开发者

javascript error while creating object

While i am trying to create object like this

new Ext.TitleCheckbox () 

I am getting "not a constructor error"

my Object is

Ext.TitleCheckbox = {

    checked:false,
    constructor : function() {
    },
    getHtml : function (config) {
        var prop = (!config.checked)?'checkbox-checked':'checkbox-unchecked';
        var html = config.title+'<div class="'+prop+'" onclick="Ext.TitleCheckbox.toggleCheck(this)">&#160;</div>';

        return html;
    },

    toggleChec开发者_开发问答k : function (ele){
        if(ele.className == 'checkbox-checked') {
            ele.className = 'checkbox-unchecked';
        }
        else if(ele.className == 'checkbox-unchecked') {
            ele.className = 'checkbox-checked';
        }

    },

     setValue : function(v){
        this.value = v;
     },

     getValue : function(){
        return this.value;
     }

};

whats the mistake in here?


Ext.TitleCheckbox is not a function, you cannot make a function call to an object literal.

If you want to use the new operator, you should re-structure your code to make TitleCheckbox a constructor function.

Something like this (assumming that the Ext object exists):

Ext.TitleCheckbox = function () {
  // Constructor logic 
  this.checked = false;
};

 // Method implementations
Ext.TitleCheckbox.prototype.getHtml = function (config) {
  //...
};

Ext.TitleCheckbox.prototype.toggleCheck = function (ele) {
  //...
};

Ext.TitleCheckbox.prototype.setValue = function (v) {
  //...
};

Ext.TitleCheckbox.prototype.getValue = function () {
  //...
};


See CMS's answer for why. As a work-around, if you really need to do this, you can do it via inheritence. In javascript Constructors inherit from objects (a constructor is just a function). So:

function MyCheckbox () {} ; /* all we really need is a function,
                             * it doesn't actually need to do anything ;-)
                             */

// now make the constructor above inherit from the object you desire:

MyCheckbox.prototype = Ext.TitleCheckbox;

// now create a new object:

var x = new MyCheckbox();
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜