首页 > 编程知识 正文

js是基于对象还是面向对象(说一下你对js面向对象的理解)

时间:2023-05-06 11:05:34 阅读:102085 作者:876

再来说说面向对象,说起对象,真的好像是一件复杂的事情~

首先,让我们了解对象。

对象实际上是创建一个对象实例,然后可以向其中添加属性和方法,如下所示:

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);//未定义好了,单个对象的理解就到这里了,希望能对大家有所帮助

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。