Javascript面向对象的初步理解

Javascript面向对象的初步理解
前言

基于类的对象:我们都知道在面向对象语言中有一个明显的标志,也就是说,有类的所有概念。我们可以创建很多对象具有相同的属性方法,通过相似的类。然而,ECMAscript没有阶级观念,也自然不同于在基于类的语言的对象。

js中的对象:一组无序属性,它可以包含基本值、对象和函数,也就是说,js中的对象是一组没有特定顺序的值。对象的每个属性或方法都有自己的名称,每个名称对应一个值。

理解对象

创建对象的方法

1创建对象最简单的方法是创建一个对象实例,然后向它添加属性和方法。

例如
var =新对象();
名称= 'moon龙人;
性别= '男人'的人;
的人。saynameandsex =函数(){
console.log(this.name,这个性别)
}
(人。saynameandsex); / /谦龙男
2使用对象文字形式

例如
var
名称:'moon龙,
性别:'男人',
saynameandsex:函数(){
console.log(this.name,这个性别)
}
}
(人。saynameandsex); / /谦龙男

Type of attribute

ECMAscript有两个属性数据:数据属性和访问性能

数据属性

数据属性包含数据值的位置。可以在这个位置读取和写入值。有四个特性描述它们的行为。

1 {可配置}:指示是否可以通过删除属性删除属性…默认值为真。

2。{ } } {枚举:指示属性是否可以通过在环回…默认值是真的。

3 {可写}:表示是否可以修改属性的值…默认值是真的。

4 { } }:表示此属性的值。默认值未定义。

修改默认的属性,你必须使用ES5(对象。defineproperty)方法,该方法包含三个参数:对象的属性,属性名称和描述的属性的对象的特点(可配置、可数、可写,值),建立一个或更多的人可以修改相应的值特征

演示

var;
object.defineproperty(人,'name',{)
可配置:false表示,不允许删除属性
可写的:false表示,不允许重写。
ennumerable:虚假表示不允许通过 / /遍历
在价值客体属性的设置: / /谦龙价值
})
人的名字= 2 / /谦龙;尝试建立有效的
删除person.name; / /尝试删除结果不生效
对于(在人var attr){
console.log(人{属性}); / /假
}
console.log(人的名字); / /谦龙
注意:设置为false后,不允许再次修改真值。此外,当Object.defineProperty()被调用时,可配置的,ennumerable写的默认值为false。

访问属性

访问属性不包含数据值,它包含一个对getter和setter函数(但两者的功能是不需要的)阅读访问属性时,会调用getter函数,这个函数负责返回有效值,写访问属性时将调用setter函数和引入新的价值功能是负责如何处理数据。

存取属性具有以下特点

{可配置}指示是否删除可用于删除属性以定义新属性。

{ } } {枚举指示是否返回属性可以穿过在环

在读取属性时,{ }调用函数,默认值未定义。

当函数被写入函数时,该函数被调用,默认值是未定义的。

注:访问属性不能直接定义,必须由object.defineproterty定义()

演示

var图书{
_year:2015,这是普通/下划线标记的属性,只能通过对象的方法访问
版本:1
}
Object.defineProperty(书、'year,{)
获取:函数(){
退货。_year; / /默认的book.year获得的值时,返回值_year开机。
},
设置:功能(价值)方法{ / /时设置的默认值boot.year要求数据处理
这_year VaR _year =;
如果(值> _year){
这_year =价值;
本版+ =价值_year;
}
}
})
book.year = 2016;
console.log(book.year,书版); / / 20162
定义多个属性

我们可以通过在object.defineproperties的ES5()添加多个对象属性的方法,这种方法有两个参数,第一个参数是添加和修改其属性的对象,第二对象的属性的属性,添加和修改相应的第一对象。

演示

var图书{ };
object.defineproperties(书,{
_year:{
值:2015,
可写的:在这里设置为true,默认为false。
},
版:{
值:1,
可写的:在这里设置为true,默认为false。
},
年:{
获取:函数(){
这_year返回;
},
设置:函数(值){
这_year VaR _year =;
如果(值> _year){
这_year =价值;
本版+ =价值_year;
}
}
}
})
书,一年= 2016;
console.log(book.year,书版); / / 20162
读取对象的属性

使用object.getownpropertydescriptor()方法在ES5,给定属性可以用来描述。

该方法接收两个参数:该对象的属性定位和读取描述符属性名称,返回一个对象,如果是数据的属性,然后返回属性具有可配置、可枚举,可值。如果是访问属性,然后返回属性具有可配置、可枚举集,得到的。

演示

var图书{ };
object.defineproperties(书,{
_year:{
值:2015,
真的写的:
},
版:{
值:1,
真的写的:
},
年:{
获取:函数(){
这_year返回;
},
设置:函数(值){
这_year VaR _year =;
如果(值> _year){
这_year =价值;
本版+ =价值_year;
}
}
}
})
对象遍历函数
功能showallproperties(obj){
对于(OBJ var attr){
console.log(ATTR +:+ obj {属性});
}
}
VaR描述= object.getownpropertydescriptor(书、'_year '); / /数据属性
无功descriptor2 = object.getownpropertydescriptor(书、'year '); / /访问属性
showallproperties(广义);
console.log(' ============================);
showallproperties(descriptor2);
这里介绍了Javascript面向对象内容的上述理解。下面,我将向大家介绍几种JS的面向对象的详细解释方法,有兴趣的朋友继续关注它。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部