首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

javascript 创建对象,该怎么解决

2013-03-28 
javascript 创建对象var Luger{newToDo:function(title,content,time,rank,color){this.title titleth

javascript 创建对象

var Luger={
    newToDo:function(title,content,time,rank,color){
        this.title = title;
        this.content = content;
        this.time = time;
        this.rank = rank;
        this.color = color;
    },
    addToDo:function(toDo){
        alert("1"+toDo);
        toDoList[toDoList.length] = toDo;
    },
    newAndAddToDo:function(title,content,time,rank,color){
        var toDo = this.newToDo(title,content,time,rank,color);
        this.addToDo(toDo);
    }

}


上面是我的代码 我想创建一个todo对象,通过Luger.newToDo  Luger.addToDo创建和添加,不过这样做貌似不行。是不是我的方法不对。 javascript
[解决办法]
肯定是方法不对了。
大概是这样子的:

// 构造函数    
function Luger(title, content, time, rank, color){
    this.title = title;
    this.content = content;
    this.time = time;
    this.rank = rank;
    this.color = color;
}
// 公共方法
Luger.prototype = {
    addToDo      : function (toDo) {
        alert("1" + toDo);
        toDoList[toDoList.length] = toDo;
    },
    newAndAddToDo: function () {
        this.addToDo(this.title);
    }
}
// 初始化
var l = new Luger('me', '23age');

[解决办法]

var toDo = this.newToDo(title,content,time,rank,color);
改成
var toDo = new this.newToDo(title,content,time,rank,color);
[解决办法]
newToDo: function (title, content, time, rank, color) {
                return {
                    title: title,
                    content: content,
                    time: time,
                    rank: rank,
                    color: color
                };


            },
            addToDo: function (toDo) {
                toDoList.push(toDo);
            },


[解决办法]
提一个用闭包的方法,供你参考:

var Luger=(function(){ // 这里用了闭包
var toDoList = [];  // 加了这个定义,你忘了定义它
    
/**
 * ToDo 对象
 */
function ToDo(title,content,time,rank,color) {
        this.title = title;
        this.content = content;
        this.time = time;
        this.rank = rank;
        this.color = color;
}

    return { // API 函数定义返回给 Luger
        newToDo:function(title,content,time,rank,color){
            return new ToDo(title,content,time,rank,color);
        },
        addToDo:function(toDo){
            alert("1"+toDo);
            toDoList[toDoList.length] = toDo; 
        },
        newAndAddToDo:function(title,content,time,rank,color){
            var toDo = this.newToDo(title,content,time,rank,color);
            this.addToDo(toDo);
        }
    }

})();

//测试代码示例:
var todo = Luger.newToDo("title2","content2",new Date(),2,"blue");
Luger.addToDo(todo);
Luger.newAndAddToDo("title1","content1",new Date(),1,"red");

热点排行
Bad Request.