使用对象
创建新对象
使用对象初始值设定项
常量对象={ property1:value1,//属性名称可以是一个标识符 2:value2,//或数字 “属性n”:value3,//或字符串 };
设x; if(条件){ x={问候语:“你好”}; }
const myHonda={ 颜色:“红色”, 车轮:4, 引擎:{气缸:4,大小:2.2}, };
使用构造函数
通过编写构造函数定义对象类型。 使用大写首字母是一种很有道理的习惯。 使用创建对象的实例 新的 .
功能车(品牌、型号、年份){ this.make=品牌; this.model=模型; this.year=年; }
const myCar=新车(“Eagle”,“Talon TSi”,1993年);
const kensar=新车(“日产”,“300ZX”,1992年); const vpgscar=新车(“马自达”,“米亚塔”,1990年);
功能人员(姓名、年龄、性别){ this.name=名称; this.age=年龄; this.sex=性别; }
constrand=新人(“rand McKinnon”,33,“M”); const ken=新人(“ken Jones”,39,“M”);
功能车(品牌、型号、年份、车主){ this.make=品牌; this.model=模型; this.year=年; this.owner=所有者; }
const car1=新车(“Eagle”,“Talon TSi”,1993年,兰特); const-car2=新车(“日产”,“300ZX”,1992年,肯塔基州);
car2.owner.name;
car1.color=“黑色”;
使用Object.create()方法
//动物特性和方法封装 const动物={ type:“无脊椎动物”,//属性默认值 显示类型(){ //显示动物类型的方法 console.log(this.type); }, }; //创建新的动物类型animal1 const animal1=Object.create(动物); animal1.displayType();// 原木:无脊椎动物 //创建新的动物类型,称为鱼类 const fish=Object.create(动物); fish.type=“鱼”; fish.displayType();// 原木:鱼类
对象和属性
访问属性
//点表示法 myCar.make=“福特”; myCar.model=“野马”; myCar.年=1969年; //括号表示法 myCar[“make”]=“福特”; myCar[“model”]=“野马”; myCar[“年”]=1969;
const myObj={}; const str=“myString”; const rand=数学.random(); const anotherObj={}; //在myObj上创建其他属性 myObj.type=“名为type的键的点语法”; myObj[“date-created”]=“此密钥有空格”; myObj[str]=“此键位于变量str中”; myObj[rand]=“这里的关键是随机数”; myObj[anotherObj]=“此键是另一个对象Obj”; myObj[“”]=“此密钥是空字符串”; console.log(myObj); // { //type:'名为type的键的点语法', //'创建日期':'此密钥有空格', //myString:'此键位于变量str中', //“0.6398914448618778”:“此处的关键是随机数”, //“[object object]”:“此键是object anotherObj”, //“”:“此键是空字符串” // } console.log(myObj.myString);//' 此键位于变量str'中
str=“myString”; myObj[str]=“此键位于变量str中”; console.log(myObj.str);// 未定义 console.log(myObj[str]);//' 此键位于变量str'中 console.log(myObj.myString);//' 此键位于变量str'中
let propertyName=“make”; myCar[propertyName]=“福特”; //通过更改变量的内容访问不同的属性 propertyName=“model”; myCar[propertyName]=“野马”; console.log(myCar);// {品牌:“福特”,型号:“野马”}
myCar.nonexistentProperty;// 未定义
枚举属性
用于。。。 在里面 循环。 此方法遍历对象的所有可枚举字符串属性及其原型链。 Object.keys() 。此方法返回一个数组,该数组在对象中只包含可枚举的自身字符串属性名称(“keys”) 我的对象 而不是原型链中的那些。 对象.getOwnPropertyNames() 。此方法返回一个数组,其中包含对象中所有自己的字符串属性名称 我的对象 ,无论它们是否可枚举。
函数showProps(obj,objName){ 让结果=“”; for(obj中的常量i){ //对象.hasOwn()用于从对象的 //原型链,只显示“自己的属性” if(Object.hasOwn(obj,i)){ result+=`${objName}$ {i} =${obj[i]}\n`; } } console.log(结果); }
myCar.make=福特 myCar.model=野马 myCar.year=1969年
函数showProps(obj,objName){ 让结果=“”; Object.keys(obj).forEach((i)=>{ result+=`${objName}$ {i} =${obj[i]}\n`; }); console.log(结果); }
函数列表所有属性(myObj){ 让objectToInspect=myObj; 设result=[]; while(objectToInspect!==null){ 结果=result.concat(Object.getOwnPropertyNames(objectToInspect)); objectToInspect=Object.getPrototypeOf(objectToInspect); } 返回结果; }
删除属性
//创建一个具有两个属性a和b的新对象myobj。 const myobj=新对象(); myobj.a=5; myobj.b=12; //删除a属性,使myobj只保留b属性。 删除myobj.a; console.log(myobj中的“a”);// 假
继承
为一种类型的所有对象定义属性
定义方法
objectName.methodName=函数名称; 常量myObj={ myMethod:函数(参数){ //做点什么 }, //这也行得通! myOtherMethod(参数){ //做点别的 }, };
objectName.methodName(参数);
Car.prototype.displayCar=函数(){ constresult=`A美丽的${this.year}${this.make}${this.model}`; console.log(结果); };
car1.显示Car(); car2.显示Car();
将其用于对象引用
常量管理器={ name:“卡丽娜”, 年龄:27岁, 职位:“软件工程师”, }; const实习生={ name:“泰龙”, 年龄:21岁, 职位:“软件工程师实习生”, }; 函数sayHi(){ console.log(`您好,我的名字是${this.name}`); } //将sayHi函数添加到两个对象 经理.sayHi=sayHi; Intern.sayHi=说嗨; 经理.sayHi();// 你好,我叫卡丽娜 实习生sayHi();// 你好,我叫泰龙
定义getter和setter
在中定义 对象初始值设定项 ,或 稍后添加到任何现有对象。
常量myObj={ a: 7、, 获取b(){ 返回this.a+1; }, 集合c(x){ 这.a=x/2; }, }; console.log(myObj.a);// 7 console.log(myObj.b);// 8,从get b()方法返回 myObj.c=50;// 调用set c(x)方法 console.log(myObj.a);// 25
我的目标 -一个数字 我的目标b -返回的getter 我的目标 加1 我的目标c -设置 我的目标 值的一半 我的目标c 正在设置为
const myObj={a:0}; Object.defineProperties(myObj{ b:{ 获取(){ 返回this.a+1; }, }, 抄送:{ 集合(x){ 这.a=x/2; }, }, }); myObj.c=10;// 运行setter,将10/2(5)赋值给“a”属性 console.log(myObj.b);// 运行getter,生成+1或6
比较对象
//两个变量,两个具有相同属性的不同对象 const-fruit={name:“苹果”}; const果树熊={name:“苹果”}; 水果==水果熊;// 返回false 水果===水果熊;// 返回false
//两个变量,一个对象 const-fruit={name:“苹果”}; const fruitbear=水果;// 将水果对象引用指定给水果熊 //这里,水果和水果熊指向同一个物体 水果==水果熊;// 返回true 水果===水果熊;// 返回true ruit.name=“葡萄”; console.log(水果熊);// {名称:葡萄}; 不是{name:“苹果”}