日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OOP面向对象

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OOP面向对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是:程序中都是用對象結構來描述現實中的事物
為什么:便于大量數據的維護
何時:所有程序都是面向對象的思想管理數據和功能
如何使用面向對象編程:面向對象三大特點:封裝,繼承,多態
一、封裝:
什么是:創建一個對象結構,保存一個事物的屬性和功能
為什么:便于大量數據的維護
何時:今年所有數據都是先封裝在對象中,再按需使用
如何:3種

1. 用{}創建一個對象:

var 對象名={屬性:屬性值,...:...,功能(即方法):function(){ 值是一個function...this.屬性名...} }

訪問對象的成員:成員 = 屬性 + 方法
訪問屬性:對象名.屬性
調用方法:對象名.方法()
問題:對象自己的方法內,想訪問自己的屬性,也不能直接屬性:報錯:屬性 未定義
為什么:對象的屬性沒有直接保存在一個函數的作用域鏈中,而引擎不能擅自進入對象中獲取數據。
解決一:對象名.屬性/方法
問題:緊耦合:對象名發生變化,必須同時改內部的對象名,一旦忘性,就出錯!
解決二:松耦合:能不能自動獲得對象名——this
什么是this:正在調用當前函數的.前的對象
每個函數與生俱來的關鍵詞,可自動獲取.前的對象
筆試時:this只和調用時.前的對象有關,和保存在哪兒毫無關系!
如果一個函數前沒加任何.,默認是window
總結:何時:只要對象自己的方法內,想使用對象自己的屬性和其它方法時,都必須用this.

var lilei = {sname: "Li Lei",sage: 11,intr() {console.log(`I'm ${this.sname},I'm ${this.sage}`);} } lilei.intr(); //I'm Li Lei,I'm 11 lilei.sage++; lilei.intr(); //I'm Li Lei,I'm 12 var intr = lilei.intr; intr(); //I'm undefined,I'm undefined //=>window.intr() //local:this -> window

2. 用new創建一個對象

var obj = new Object(); //創建的obj:{}是一個空數組 obj.屬性值 =; obj.方法名 = function(){ ... }var lilei = {sname: "Li Lei",sage: 11 }

揭示了:js底層所有對象都是關聯數組
vs 關聯數組相比:
相同:1. js中的對象,可隨時添加新屬性和新方法,而不會報錯!
2.訪問對象中不存在的屬性,不會報錯,而是返回undefined
3.訪問對象中的成員,有兩種方式:
簡寫:對象名.屬性名/方法名()
// ||等效
何時用.(點):如果要訪問的屬性名是寫死的
完整:對象名[“屬性名”]/“方法名”
何時用[]:如果要訪問的屬性只能在運行時動態獲得
4.對象也可以用for in 遍歷每個屬性
自己記錄:不加this.,是以變量形式訪問,變量不存在,就會的報錯

function clone(obj) {var newObj = {};for (var key in obj) {newObj[key] = obj[key];}return newObj; } var lilei2 = clone(lilei); console.log(lilei); //sname:"Li Lei",sage:11 console.log(lilei2); //sname:"Li Lei",sage:11 console.log(lilei == lilei2); //false

總結

以上是生活随笔為你收集整理的OOP面向对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。