1.什么是Object?Object是JavaScript的一种数据类型,用于存储各种key-value集合和更复杂的实体。几乎所有对象都是Object类型的实例,它们都从Object.prototype继承属性和方法,尽管大多数属性会被覆盖(遮蔽)或覆盖。对象是属性的集合,包括名称和值。如果属性值是函数,则称为方法。1.创建一个新对象方法一:使用对象初始化器创建一个对象varmyCar={name:"john",age:22}方法二:使用new关键字创建一个对象functionCar(make,model,year){this.make=make;这个。模型=模型;this.year=year;}varmycar=newCar("Eagle","TalonTSi",1993);方法三:使用Object.create创建对象//动物属性和方法封装varAnimal={type:"Invertebrates",//属性默认值displayType:function(){//用于显示类型属性的方法console.log(这个类型);}}//创建一个新的动物——animal1varanimal1=Object.create(Animal);animal1.displayType();//输出:Invertebrates2,设置和删除属性//3中设置属性的方式varmyCar=newObject();myCar.make="Ford";myCar["model"]="Mustang";varpropertyName="other";myCar[propertyName]="title";console.log(myCar);//删除属性deletemyCar.make;3.遍历对象属性方式遍历对象中的属性。varmyCar={name:"john",age:22}//方法一:functionshowProps(obj,objName){varresult="";for(variinobj){if(obj.hasOwnProperty(i)){结果+=objName+"."+i+"="+obj[i]+"\n";}}返回结果;}console.log(showProps(myCar,"myCar"));//方法二console.log(Object.keys(myCar));//方法三console.log(Object.getOwnPropertyNames(myCar));4.定义方法将函数作为对象的属性值,称为方法。设置、获取等更多内容,看这里!varmyObj={myMethod:function(params){//...dosomething}//或者可以这样写myOtherMethod(params){//...dosomethingelse}};5.两个对象实例的对象比较永远不会相等,即使它们的属性完全相同。//两个变量,两个具有相同属性的不同对象varfruit={name:"apple"};varfruitbear={name:"apple"};fruit==fruitbear//returnfalsefruit===fruitbear//returnfalse//两个变量,同一个对象varfruit={name:"apple"};varfruitbear=fruit;fruit==fruitbear//returntruefruit==fruitbear//returntrue二、对象常用方法1、Object.defineProperty作用:增加或修改对象的属性值。更多内容,请看这里!//1.语法Object.defineProperty(obj,prop,descriptor)//2.用法constobject1={};Object.defineProperty(object1,'property1',{value:42,writable:false});object1.property1=77;//在strictmodeconsole.log(object1.property1)中抛出错误;//预期输出:422,Object.assign函数:通过复制一个或多个对象创建一个新对象。.更多内容,请看这里!//语法Object.assign(target,...sources)//1.复制一个对象constobj={a:1};constcopy=Object.assign({},obj);console.log(copy);//{a:1}//2.合并相同的属性consto1={a:1,b:1,c:1};consto2={b:2,c:2};consto3={c:3};constobj=Object.assign({},o1,o2,o3);console.log(obj);//{a:1,b:2,c:3}//3.继承与不符合枚举属性不能复制constobj=Object.create({foo:1},{//foo是继承属性.bar:{value:2//bar是一个不可枚举的属性。},baz:{value:3,enumerable:true//baz本身是一个可枚举的属性。}});constcopy=Object.assign({},obj);控制台日志(复制);//{baz:3}3、Object.create函数:创建一个具有指定对象和属性的新对象。更多内容,请看这里!constperson={isHuman:false,printIntroduction:function(){console.log(`我的名字是${this.name}。我是人吗?${this.isHuman}`);}};常量我=对象。创建(人);me.name='马修';//"name"是在"me"上设置的属性,但不是在"person"上设置的属性me.isHuman=true;//继承的属性可以被覆盖me.printIntroduction();//预期输出:"MynameisMatthew.AmIhuman?true"3.原型(继承)JavaScript的每个实例对象都有一个私有属性(称为__proto__)指向上一层的对象,上一层的对象指向下一层的对象,依次类推,直到__proto__属性为null,最后这个对象就是Object。这种通过__proto__属性链接对象的方法称为原型链。继承性状也是以此为基础的。详情请看这里!四、参考文档详解JavaScript的Object对象
