1. 创建对象
三种创建对象的方式:
//-----1
var programmer=new Object();
//-----2
var programmer={};
//-----3
var programmer=Object.create(Object.prototype);
Object.create()
Object.create(新创建对象的原型对象,添加到新创建对象的属性),最后返回新创建的对象。
如:
2. 操作对象的属性
var programmer={
cloth:"T-shirt",(默认可枚举,可更改)
shoes:"Nike",
clockIn:function(){
alert("9:00 AM");
}
};
console.log(programmer.cloth);
programmer["cloth"]="jacket"; //法1:更改cloth值
console.log(programmer.cloth);
programmer.cloth="sweater"; //法2:更改cloth值
console.log(programmer.cloth);
programmer.habit="play game"; //法1:增加新属性(默认可枚举,可更改)
console.log(programmer.habit);
programmer["hair"]="sparse"; //法2:增加新属性(默认可枚举,可更改)
console.log(programmer.hair);
Object.defineProperty
参考作者Weastsea简书上的文章,点击前往。
Object.defineProperties
同时描述对象的多个属性,如:
3. 属性的检测
- in 运算符—检测对象的自有或继承属性
- hasOwnProperty()—检查对象的自有属性
- propertyIsEnumerable()— 检查自有且可枚举的属性
4. 属性的枚举
- for in 语句
⚠️可枚举对象的自有或继承属性 - Object.keys(obj)
⚠️只返回自有属性
var shelf={
book1:"English",
book2:"Chinese",
book3:"Math"
};
console.log(Object.keys(shelf)); //["book1", "book2", "book3"]
5. 属性的复制
Object.assign(目标对象, …源对象)
复制规则:
- 将所有可枚举属性的值从一个或多个源对象复制到目标对象,然后将返回目标对象。
- 如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖。后来的源的属性将类似地覆盖早先的属性。
6. 对象原型上的方法
- Object.prototype.constructor
返回构造函数
programmer.constructor; //Object
- Object.prototype.toString()
programmer.toString(); //[object Object]
使用toString()检测对象类型
var toString=Object.prototype.toString;
toString.call(new Date); //[object Date]
toString.call(new String); //[object String]
- Object.prototype.valueof()
返回对象的原始值