对象(一)
基本特征:面向對象編程有三個基本特征:封裝、繼承、多態;
面向對象思想:JavaScript 語言是通過一種叫做?原型(prototype)的方式來實現面向對象編程的。對象(object)則是依靠?構造器(constructor)利用?原型(prototype)構造出來的;
屬性類型:數據屬性、訪問器屬性
? ? ? ?數據屬性:包含一個數據值的位置,可以讀取和寫入;包括4個描述其行為的特性:?configurable、enumerable、writeable、value
? ? ? ?要想修改屬性默認的特征:使用Object.defineProperty() ?接收三個參數,屬性所在對象、屬性的名字、修改的描述符對象;
? ? ? ?訪問器屬性:包含一對兒getter和setter函數,讀取訪問器屬性時,調用getter函數,這個函數負責返回有效的值;寫入訪問器屬性時,調用setter函數并傳入新值;
? ? ? ? 訪問器屬性有4個特性:configurable、enumerable、get、set、
? ? ? ? 訪問器屬性不能直接定義,必須使用,Object.defineProperty()
? ? ? ?
var person={_year:2018, //直接定義數據屬性_yearnum:1};console.log("這是開始:"+person._year);Object.defineProperty(person,"year",{ //使用Object.defineProperty()定義訪問器屬性yearget:function(){return this._year;},set:function(newvalue){if(newvalue>2018){this._year=200;this.num+=newvalue-2018;}}});person.year=2020;console.log(person.num); //3console.log(person._year); //200?
定義多個屬性 Object.defineProperties() ?接收兩個參數:要添加或修改屬性的對象 ? ?要添加的屬性對象
var school={};Object.defineProperties(school,{_year:{ //定義兩個數據屬性value:100},num:{value:2},year:{ //定義一個訪問器屬性 year get:function(){return 200;},set:function(newvalue){this._year=newvalue;this.num+=1;}}});讀取屬性的特性 :Object.getOwnPropertyDescriptor() ? 接收兩個參數,屬性所在對象 ?和要讀取描述符的屬性名稱;
?
轉載于:https://www.cnblogs.com/yongyang/p/8902542.html
總結
- 上一篇: 紧前关系绘图法
- 下一篇: 房屋租赁管理系统mysql(含论文)