欢迎大家讨论下:愿意创建Object还是Function对象?什么情况下愿意?为啥呢?

解决方案 »

  1.   

    如果是存储数据  视情况用 Array and Object如果是对数据处理 操作等  用Function 
      

  2.   

    该创建什么就创建什么,存储数据没理由让我搞个function
      

  3.   

    这个按照需求来吧,该用什么就用什么,如果能有object实现的,就没必要用function
      

  4.   

    我举一个简单的例子吧:var people = {
    name:'xiaohuang',
    sex:'man'
    };
    people.getName = function() {
    return this.name;
    }people.changeSex = function() {
    var sex = this.sex;
    if(sex === 'man'){
    this.sex = 'women';
    }
    else if(sex === 'women'){
    this.sex = 'man';
    }
    else {
    this.sex = 'I\'m sorry';
    }
    }
    或者:function people(){
    this.name = 'xiaohuang';
    this.sex = 'man';
    };
    people.prototype = {
    getName: function() {
    return this.name;
    },
    changeSex:function() {
    var sex = this.sex;
    if(sex === 'man'){
    this.sex = 'women';
    }
    else if(sex === 'women'){
    this.sex = 'man';
    }
    else {
    this.sex = 'I\'m sorry';
    }
    }
    };
    var test = new people();
      

  5.   

    自己用得随手就好,object的好处就不用new,但是不利于多实体,function要new个instance,可以有多个实体
      

  6.   

    我更倾向于创建object对象,javascript本来就是面向对象语言
      

  7.   

    还是要根据需求来定。前提是知道两种方法的区别。定义后
     Object不能再使用new创建对象实例,可以赋值给其他变量,多个变量同时引用一个对象,或者克隆对象
     Function可以使用new创建多个对象实例,使用时互不影响,但是使用内存也会更多
     
    继承
     Object无法继承,除非用复制的方式来实现
     Function可以实现
     
    toString和valueOf
     Object,如果你不实现它的代码,别人无法通过toString、valueOf查看到你的代码
     Function默认情况下,toString、valueOf是可以看到function的代码的
     
    prototype原型问题
     给Object原型增加方法或属性,new function出来的对象也同样有这样的方法——因此这是扩展通用对象功能的好地方
     给Function原型增加方法或属性,Object实例对象不会有这些方法和属性
     
    String、Number、Boolean对象不支持引用传递。
      

  8.   

    上面有处颠倒了:
    prototype原型问题
     给Object原型增加方法或属性,Object实例对象不会有这些方法和属性
     给Function原型增加方法或属性,new function出来的对象也同样有这样的方法——因此这是扩展通用对象功能的好地方