对象的创建和枚举

来源:互联网 发布:阿里域名解析带端口号 编辑:程序博客网 时间:2024/05/16 06:08

对象的创建和枚举

创建对象的两种方式

var obj = {};var obj = new Object();

Object.create(proObj)

创建一个新的对象,但是要把proObj作为这个对象的原型

var obj = {  getX: function () {  }};var obj2 = Object.create(obj);

IE9以下不支持create方法,实现方法如下:

var obj = { getX: function () {   console.log('x') }};function create(o) { function Fn() { } Fn.prototype = o; return new Fn();}var newObj = create(obj);

一般在prototype上使用

function Sum() {}Sum.prototype = create(obj);Sum.prototype.constructor = Sum;

for-in

Object.prototype.aa = function () {    console.log('aa')};var obj = {name:'大王',age:100};for (var key in obj) {  console.log(obj[key]); // name,age,函数aa}

for-in 循环在遍历时,默认会把自己私有的和它在所属类原型上扩展的属性和方法都可以遍历出来,但是一般情况下,我们遍历一个对象只需要遍历私有的即可,可以使用以下判断:对象的枚举propertyIsEnumerable或hasOwnProperty

for (var key in obj) {  if (obj.propertyIsEnumerable(key)) {    console.log(obj[key]); // name,age  }}
for (var key in obj) {  if (obj.hasOwnProperty(key)) {    console.log(obj[key]);  }}