再来说说面向对象,说起对象,真的好像是一件复杂的事情~
首先,让我们了解对象。
对象实际上是创建一个对象实例,然后可以向其中添加属性和方法,如下所示:
let person=new Object();//这是在创建一个实例。
person.name=' Kobe
person.age=29
person . SayJob=function(){ 0
console.log('篮球运动员');
};
//一般我们喜欢用字面的方法,清爽直接。
让人={人
名称: '神户',
年龄: 29,
sayJob :函数(){ 0
console.log('篮球运动员');
}
} ;然后,如上所述,已经创建了具有姓名、年龄属性和sayJob方法的个人对象。
其次,我们来研究一下属性的类型,分为数据属性和访问器属性。
1.什么是数量属性?和上面的person对象一样,它的名字和年龄属性都是数据属性,数据属性有四个特点:可配置、可枚举、可写和值。
可配置:指示是否可以通过删除属性来重新定义属性,是否可以修改属性,或者是否可以将属性修改为访问器属性。默认值为真
可枚举:指示属性是否可以通过for-in循环返回。默认值为真
可写:指示属性的值是否可以修改。默认值为真
值:属性的数据值。默认值未定义。为属性指定值时,值的值将成为指定值。
要修改属性的默认属性和上面的属性,必须使用Object.defineProperty()方法,该方法接收三个参数:属性所在的对象、属性的名称和描述属性的对象,如下所示;
让人={ };
Object.defineProperty(person,' name ',{ 0
可配置:假。//在此将可配置属性更改为false。
值: '玫瑰'
} ) ;
console . log(person . name);//罗斯
删除person.name//由于可配置值为false,删除名称属性将不起作用。
console . log(person . name);//罗斯
let animal={ };
Object.defineProperty(person,' name ',{ 0
可写: false,//在此将可写属性更改为false。
值: '韦德'
} ) ;
console . log(animal . name);//韦德
Animal.name='James' //因为可写值为false,重写名称属性值将不起作用。
console . log(animal . name);//Wade2。存取器属性存取器属性不包含数据值。它包含一对getter和setter函数。读取访问器属性时,调用getter函数,该函数负责返回值。写入访问器属性时,调用setter函数,并传入负责处理数据的新值。访问器属性还有四个特征:可配置、可枚举、获取和设置。
可配置:指示是否可以通过删除属性来重新定义属性,是否可以修改属性,或者是否可以将属性修改为访问器属性。默认值为真
可枚举:指示属性是否可以通过for-in循环返回。默认值为真
Get:读取属性时调用的函数。默认未定义
Set:写入属性时调用的函数。默认未定义
不能直接定义访问器属性,必须通过Object.defineProperty()方法定义。让我们先看看代码:
让人={人
年龄:18岁
};
Object.defineProperty(person,' yearslater ',{ 0
get :函数(){ 0
把这个还给我
},
设置:函数(值){ 0
this.age=值
}
} );
console . log(person . age);//18
person . years late=2;
console . log(person . age);//20上面的person对象定义了一个默认的属性age。年后访问器属性包含一个set和get函数。get函数返回年龄的值。set函数用于处理值,通过person.yearslater访问值来改变age的值,这是访问器属性的常用方式。
3.要定义多个属性,需要使用Object.defineProperties()方法。该方法接收两个参数,第一个是要添加和修改的对象,第二个与第一个对象中要添加或修改的属性一一对应。
让人={ };
Object.defineProperties(person,{ 0
名称:{
可写: rue,
值: '杜兰特'
},
年龄:{
可配置:false,
值:28
},
年后:{
get :函数(){ 0
把这个还给我
},
set :函数(值){ 0
this.age=值
}
}
} )4.读取属性的特性,使用对象。getowntpropertysdescriptor()方法,这个方法接收两个参数:属性所在对象和要读取其描述符的属性名称,返回值是一个对象。
我们还是定义上面那个人对象
让描述符=对象。getowntpropertysdescriptor(person,‘name’);
控制台。日志(描述符。值);//杜兰特
控制台。日志(描述符。书面);//真
控制台。日志(描述符。get);//未定义好了,单个对象的理解就到这里了,希望能对大家有所帮助