javascript创建对象{}和new那种方式好?

(function() {
// 第一种 {}
var $路人女主养成方法 = {
  _信息方法 : function(_名字, _年龄, _职业) {
    var $路人女主 = Object.create(this);
    $路人女主._名字 = _名字;
    $路人女主._年龄 = _年龄;
    $路人女主._职业 = _职业;
    return $路人女主;
  },
  _养成方法 : function() {
    var $女主 = this;
    alert('第一种: \n名字: ' + $女主._名字 + '\n年龄: ' + $女主._年龄 + '\n职业: ' + $女主._职业);
  }
},
$女主数据 = [
  $路人女主养成方法._信息方法('霞之丘诗羽', 18, '学生 & 小说家'),
  $路人女主养成方法._信息方法('加藤惠', 17, '学生'),
  $路人女主养成方法._信息方法('泽村·史宾瑟·英梨梨', 16, '学生&漫画家')
];
$女主数据.forEach(function($数据) {
  $数据._养成方法();
});
})();
(function() {
// 第二种 new
function $路人女主信息(_名字, _年龄, _职业) {
  var $路人女主 = this;
  $路人女主._名字 = _名字;
  $路人女主._年龄 = _年龄;
  $路人女主._职业 = _职业;
}
$路人女主信息.prototype._养成方法 = function() {
 var $女主 = this;
    alert('第二种:\n名字: ' + $女主._名字 + '\n年龄: ' + $女主._年龄 + '\n职业: ' + $女主._职业); 
};
var $女主数据 = [
new $路人女主信息('霞之丘诗羽', 18, '学生 & 小说家'),
new $路人女主信息('加藤惠', 17, '学生'),
new $路人女主信息('泽村·史宾瑟·英梨梨', 18, '学生&漫画家')
];
$女主数据.forEach(function($数据) {
  $数据._养成方法();
});
})();
一种是 创建对象{}方式
一种是 原型new 方式
这两种写法哪种写法好? 还有性能方面和复用性?(变量名=>纯属娱乐)
阅读 2.8k
5 个回答

一般情况如果这个对象不需要复用,有多个实例,那推荐用{}这种字面量的方式,可读性更好
要用new的情况是你有一个工厂函数,需要生成多个类似的对象

字面量的写法更符合js的风格习惯。性能是字面量的方式高的(高性能js这书好像看到过),复用性方面你这里感觉差别不大。

js中字面量的形式创建对象更为常见,看上去更加清晰,并且性能更好,但是相对而言,其一般适用于较简单场景,因为不能满足多种复杂情况下的变化需求。
构造函数可以接受不同的参数以创建相同原型不同属性的对象,可以将相似类型的生成代码合并起来,但是这个也是有好有坏,随着应用场景的变化可能反而极大的增加了理解难度和代码管理难度。

注意!各有各的优点

//{}
平时声明对象,或者该该对象复用性几乎为0,那么就可以用{}
优点:简洁明了,益于书写
缺点:只能创建一次对象,复用性较差,如果要创建多个对象,代码冗余度太高
//工程函数构造 funtion xxx(){}
优点:复用性强,创建多个对象 代码量少
缺点: 对象无法识别,因为所有的实例都指向一个原型
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题