js面向對象與PHP面向對象總結

js面向對象

1.什么是對象?

  對象:任何實體都是對象,擁有屬性和方法兩大特征

  屬性:描述事物的特點;

  方法:實物擁有的行為;

2.在JS里

  Person.name="zhang"

  Person.fn=function(){}

3.js中如何去生成對象?

  (1)單例模式/字面量定義 var obj={name:"zhang"}

  (2)var obj=new Object() 內置類

      Obj.name="zhang"

      js內置的類 string array object number boolean ?date function

  (3)工廠模式

      function create(){

        var obj={}

        Obj.name=

        return obj;

      }  

  (4)構造函數

      function Person(){

        this.name="li"

      }

      var zhang=new Person()

4.this的問題

    this是關鍵字,它是一個對象;

    函數外 this指向window;

    函數內看帶不帶. 帶.就是.前面的對象,不帶.就是window

5.原型prototype

  每個函數 類天生自帶一個prototype的屬性,這個屬性是個對象,它里面天生自帶一個constructor的屬性,屬性值是當前函數/類本身;

  每個實例對象 天生自帶一個__proto__的屬性,這個屬性是對象,它指向當前實例對象的類的原型

6.類的繼承

  對象復制

    (1)通過for in 將父類的所有屬性變成子類的私有屬性

    (2)Object.create() 將父類的屬性復制成子類公有的屬性

  <1>原型繼承

    將父類的實例賦值給子類的原型,父類實例的所有屬性成了子類的公有屬性

  <2>call繼承 將父類私有的繼承為子類私有的

    改變this指向的方法:

    a.call()?

      fn.call(div,)將fn中的this換成div然后再把fn調用;

    b.apply()

    c.bind()

    d.提前聲明;

   <3>冒充對象

      冒充對象繼承利用for in ?將父類的所有屬性繼承為子類私有的

   <4>混合繼承 call繼承和原型繼承結合

     私有的繼承為私有的,私有的和公有的再次繼承為公有的

   <5>組合繼承(寄生式繼承) ?call繼承和克隆的結合

   ? <6>中間類繼承 ?

      偽數組

   <7>拷貝繼承

      淺拷貝

      深拷貝

        

        

PHP面向對象:

  1.類的創建 class創建類

   

  2.對象的創建 ?使用new關鍵字;

   

  3.成員的添加;

   添加成員需要三個修飾符

    public ?公開的,定義公共的屬性和方法,類的外部,類的內部,子類都可以使用;

    protected ?受保護的,定義受保護的屬性和方法 只能在類的內部和子類里使用

    private ?私有的,定義私有的屬性和方法,只能在自身的類里使用

    方法成員如果前面不加修飾符,默認是public;

  4.成員調用使用->符號;

    

    使用成員屬性和方法的時候,屬性和方法前面不帶$符

    

  5.特殊對象$this指向實例化的對象,如果類的方法里想使用類的其他屬性和方法得需要使用$this對象

    

  6.構造方法 function__construct() ?構造函數在new實例化的時候系統會自動調用

    

  7.析構方法

   我們每次new實例化,系統就會給這個對象分配一個內存空間,如果不銷毀,系統壓力會很大,系統有一個析構方法 __destruct對象實例化之后系統會自動調用。內存銷毀的原則是先進后銷。

?   

  8.成員賦值

   

  9.php中的繼承使用關鍵字extends

   

  10.類中常量 使用const關鍵字定義常量,常量在定義和使用的時候不能帶$符。

   使用的時候不能用$this ?使用范圍修飾符 :: 前面還是這個類名或self

   

   如果子類想訪問父類中的常量 使用parent::常量名

   

  11.靜態變量 在變量前加上關鍵字 static 靜態屬性 不能使用->訪問了,使用類名::$變量名:

   

  12.重載 覆蓋

   子類繼承父類的方法時,如果子類有和父類同名的方法,從父類那繼承的方法就會被覆蓋掉,這個就叫重載;

   如果父類的方法前面加上final 則子類無法重載父類的方法,就會報錯。

   

  13.調用父類的構造方法

   php不會在子類的構造方法中自動的調用父類的構造方法,要執行父類的構造方法,需要在子類的構造方法在調用parent::__construct().

?

?

面向對象三大特征

  封裝:對外只告訴你如何操作,內部結構不需要你知道。

     對外只提供可操作的接口(方法),對內的數據操作不可見

    

  繼承:子類可以繼承父類的屬性和方法,但是有限繼承,public protected private 修飾的屬性可以繼承protected public 修飾的方法 子類可以繼承,父類的常量也可以繼承。

    

  多態:php沒有多態,因為php是弱類型語言,不會對變量提前進行類型聲明,但是有重載;

  重載:父類和子類 方法相同 子類會覆蓋父類的方法。js也有重載。

?

?

?

   

?

?

   

?

轉載于:https://www.cnblogs.com/yuanjingjing/p/10679389.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277987.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277987.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277987.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

面向全球用戶的Teams app之Culture數字篇

我前幾周在微軟Ignite the Tour北京大會上&#xff0c;分享了如何開發一款面向全世界用戶的Teams App&#xff0c;里面介紹了在開發Global Ready的app時會遇到的各種挑戰&#xff0c;反響很好。所以我準備寫幾篇文章&#xff0c;將這些內容分享給沒有時間參加大會的同學。 這篇…

Dubbo原理與框架設計

Dubbo是常用的開源服務治理型RPC框架&#xff0c;在之前osgi框架下不同bundle之間的方法調用時用到過。其工作原理和框架設計值得開源技術愛好者學習和研究。 一、Dubbo的工作原理 調用關系說明 服務容器負責啟動&#xff0c;加載&#xff0c;運行服務提供者。服務提供者在啟動…

面向全球用戶的Teams app之Culture計量單位和禁忌篇

我在前一篇文章里分享了Global Ready的app時會遇到的不同文化對于數字方面的挑戰。這篇我繼續分享不同文化對于計量單位和禁忌方面的挑戰。 我們先來看一個例子&#xff0c;假如有一個teams bot&#xff0c;它告訴你一些動物的速度&#xff0c;比如它告訴你&#xff1a; 獵豹能…

【我的Android進階之旅】Android自定義Lint實踐

背景 2017年8月份的時候&#xff0c;我在公司開始推廣Lint、FindBugs等靜態代碼檢測工具。然后發現系統自帶的Lint檢測的Issue不滿足我們團隊內部的特定需求&#xff0c;因此去自定義了部分Lint規則。這個檢測運行了大半年&#xff0c;運行良好&#xff0c;團隊的代碼規范也有了…

存儲結構與索引

一、SQL數據存儲的基本介紹 數據庫中的數據存儲涉及頁&#xff08;Page&#xff09;和區&#xff08;Extent)這兩個概念了。SQL server中數據存儲的基本單位是頁。為數據庫中的數據文件&#xff08;.mdf或.ndf&#xff09;分配的磁盤空間可以從邏輯上劃分成頁&#xff08;從0到…

面向全球用戶的Teams app之時區篇

我在前兩篇文章里分享了Global Ready的app時會遇到的不同文化的挑戰。這篇我繼續分享在時區方面的挑戰。 時間是最復雜的&#xff0c;最容易出錯的部分。時間復雜的最根本原因是時區問題。 首先&#xff0c;大家都知道&#xff0c;我們地球是圓的&#xff0c;這個意味著如果大…

Linux: Nginx proxy_pass域名解析引發的故障

背景 業務架構&#xff1a; 部署細節&#xff1a;  兩容器均部署在同一機器上&#xff0c;通過 docker-compose 編排&#xff0c;并且通過link方式鏈接。 故障描述 在有次更新代碼時&#xff0c;發現前端能夠打開&#xff0c;但是所有接口請求全是502(Bad GateWay) 故障排查 …

Oracle建立全文索引詳解

Oracle建立全文索引詳解1.全文檢索和普通檢索的區別 不使用Oracle text功能&#xff0c;當然也有很多方法可以在Oracle數據庫中搜索文本&#xff0c;比如INSTR函數和LIKE操作&#xff1a; SELECT *FROM mytext WHERE INSTR (thetext, Oracle) > 0; SELECT * FROM mytext WHE…

面向全球用戶的Teams app之夏令時篇

我在前兩篇文章里分享了Global Ready的teams app時會遇到的不同挑戰。這篇我繼續分享在夏令時方面的挑戰。 夏令時&#xff0c;主要是為了節約能源&#xff0c;英文里通常縮寫成DST(Daylight Saving Time)。一般在天亮早的夏季人為將時間調快一小時&#xff0c;可以使人早起早…

爬取全部的校園新聞

1.從新聞url獲取新聞詳情&#xff1a; 字典,anews 2.從列表頁的url獲取新聞url&#xff1a;列表append(字典) alist 3.生成所頁列表頁的url并獲取全部新聞 &#xff1a;列表extend(列表) allnews *每個同學爬學號尾數開始的10個列表頁 4.設置合理的爬取間隔 import time import…

面向全球用戶的Teams app之合規性篇

我在前兩篇文章里分享了Global Ready的app時會遇到的不同挑戰。這篇我繼續分享在合規性方面的挑戰。 說到合規性compliance&#xff0c;不得不說GDPR標準&#xff0c;當我們發布了一個teams app后&#xff0c;微軟會要求開發人員做一個security self assessment&#xff0c;這…

C進階 - 內存四驅模型

一.內存四驅模型 不知我們是否有讀過 《深入理解 java 虛擬機》這本書&#xff0c;強烈推薦讀一下。在 java 中我們將運行時數據&#xff0c;分為五個區域分別是&#xff1a;程序計數器&#xff0c;java 虛擬機棧&#xff0c;本地方法棧&#xff0c;java 堆&#xff0c;方法區。…

行內元素中去掉文字的上下間距,使得文字所在元素的高度同字體高度一致的方法...

之前在p這類塊元素中的文字&#xff0c;給line-hight1;就可以去掉文字自帶的上下間距&#xff0c; 像這樣&#xff1a; 最近突然發現這個方法在行內塊和塊元素上好使&#xff0c;可當用在span或者a這類內聯元素上都不好使&#xff0c;除了轉為塊元素的方法來去掉上下間距&#…

VSCode的Teams插件

隨著今年在線的Build大會的結束&#xff0c;又是一大波的 Teams 新功能&#xff0c;新工具&#xff0c;新SDK。我接下來幾篇博客就會詳細和大家一一介紹。我今天先從VSCode的插件開始。 打開VS Code&#xff0c;搜索Teams&#xff0c;就可以找到Microsoft Teams Toolkit插件&a…

ADB原理,Wi-Fi連接,常用命令及拓展

Android 開發筆記 onGithub 文章多處鏈接需要科學上網 本文按順序主要講解了ADB的原理&#xff0c;使用Wi-Fi連接設備&#xff0c;ADB常用命令&#xff0c;在Java代碼中執行shell命令&#xff0c;使用ddmlib進行擴展。 ADB的原理 參考 官方文檔 ADB&#xff08;Android Debug B…

使用Flow快速開發Teams小應用

繼續我的上一篇博客&#xff0c;這篇繼續介紹BUILD大會里的內容&#xff1a;Flow。 Flow是微軟power平臺的一個服務&#xff0c;通過簡單的拖拽就可以完成一個業務邏輯的處理&#xff0c;現在Flow和Teams的結合十分緊密。我們來試一下。 先點擊Teams左邊的Flow菜單。 如果你的…

python正則中如何匹配漢字以及encode(‘utf-8’)和decode(‘utf-8’)的互轉

正則表達式&#xff1a;  [\u2E80-\u9FFF]$ 匹配所有東亞區的語言   [\u4E00-\u9FFF]$ 匹配簡體和繁體   [\u4E00-\u9FA5]$ 匹配簡體   <input type"text" name"username" οnkeyup"valuevalue.replace([\u4E00-\u9FA5]$)"> 正則表…

【區塊鏈】認識區塊鏈的基本概念

2018年區塊鏈技術風卷全球&#xff0c;似乎大家都在談論區塊鏈&#xff0c;那到底什么區塊鏈&#xff0c;區塊鏈到底能干什么&#xff0c;對普通人會有什么影響&#xff0c;很多人還是稀里糊涂&#xff0c;那么就談談我的一些理解吧&#xff0c;拋磚引玉歡迎探討。 我是如何接觸…

Java 分割、合并byte數組

場景&#xff1a;上傳文件較大&#xff0c;把存放文件內容byte數組拆分成小的。下載的時候按照順序合并。 起初覺得挺麻煩的&#xff0c;寫完覺得挺簡單。 切割&#xff1a; /*** 拆分byte數組* * param bytes* 要拆分的數組* param size* 要按幾個組成一…

Java版本的Bot Framework SDK

微軟為了鼓勵Java開發人員開發bot&#xff0c;在上個月推出了Java的Bot SDK v4.6版本&#xff0c;目前還在Preview版本&#xff0c;相信不用多久就可以趕上其他版本了。 我的java還停留在 n 年前的水平&#xff0c;但是處于好奇&#xff0c;決定玩一下這套sdk。 這套sdk目前建…