Oject对象的标的是其他对象(String、data、自定义对象)
一个对象可以包括:属性、方法、数值。
将对象转换为基本类型:
*toString 返回字符串
*valueOf 用于返回字符串以外的基本类型(number、布尔值)
var dat=new Date();
console.log(dat.toString());
console.log(dat.valueOf());
var ary=['prototype.js','Jq','Yahoo'];
console.log(ary.toString());
console.log(ary.valueOf());
assign方法合并对象
let pet={
type:'mouse',
name:'kiki',
description:{
birth:'2-15';
}
};
let pet2={
name:'Tamaka',
color:'white',
description:{
food:'weeds';
}
};
let pets={
weight:42,
photo:'http://www.wings.msn.to/img/ham.jpg'
};
Object.assign(pet,pet2,pet3);
console.log(pet);
assign方法会覆盖原来的同名属性(本例子中是‘name’),而且不支持递归合并。如果不想影响到原来的对象的话,需要将语句改成:
let merged=Object.assign({},pet,pet2,pet3);
表示将pet~pet3合并到{}空对象中,就不会影响原来的对象。
创建对象:
var obj={x:1,y:2,z:3};
var obj2=new Object();
obj2.x=1;
obj2.y=2;
obj2.z=3;
var obj3=Object.create(Object.prototype,{
x:{value:1, writable:true, configurable:true, enumerable:true},
y:{value:2, writable:true, configurable:true, enumerable:true},
z:{value:3, writable:true, configurable:true, enumerable:true}}
);
以上三个方法都是创建一个对象Object x=1,y=2,z=3。
Oject.create()方法:
Object.create(proto,[props])
**proto:新创建对象的原型对象;
**props:属性信息。
obj3的方法中,将Object.prototype传递给proto,表示“创建继承Object对象的功能的对象”
create方法的参数props参数中,可以使用如下形式一次定义属性。
{属性名:{属性名:{属性名:值,...}...}
其中属性包括:configurable,enumerable,value,writable,get,set
定义不可变对象:
'use strict';
var pet={type:'White House',name'Obarma'};
//Object.preventExtensions(pet);
//Object.seal(pet);
//Object.freeze(pet);
pet.name='KaKa';
delete pet.type;
pet.weight=42;
方法 | preventExtension | seal | freeze |
添加属性 | 不可以 | 不可以 | 不可以 |
删除属性 | 可以 | 不可以 | 不可以 |
改变属性值 | 可以 | 可以 | 不可以 |