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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

面向对象编程(OOP)----BLUE大师JS课堂笔记(二)

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向对象编程(OOP)----BLUE大师JS课堂笔记(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,把面向過程的程序改寫成面向對象的程序

1.前提 ? 所有的程序都在onload里面

2.改寫 ? 不能函數嵌套,可以全局變量

3.onload-------------------->構造函數

? 全局變量------------------->屬性

? 函數----------------------->方法

? 需要用到面向對象比較多的是游戲公司

4.改錯,重點是this

? this啥時候出問題呢?1.定時器 ? 但凡定時器中的this都是指的是window

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.事件

? 解決這個方法 ? var _this=this;

? 然后通過閉包傳遞this

?

二,JSON更適合只生成一個JSON對象的情況

? ? ?命名空間:JSON里面套JSON

? ? ?var obj = {a:5,b:12,c:function(){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? alert(this.a);

? ? ? ? ? ? ? ? ? ?},d:{e:function(){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?alert(this.f);

? ? ? ? ? ? ? ? ? ? ? ? ?},f:34}};

?

三,繼承

在PHP中表現繼承的方式如下:

 1 class Person{
 2     function __construct($name,$sex)
 3     {
 4          $this->name=$name;
 5          $this->sex=$sex;
 6     }                                              //定義類的屬性
 7     function showName()
 8     {
 9         echo $this->name;              //定義類的showName方法
10     }
11     function showSex()
12    {
13         echo $this->sex;                 //定義類的showSex方法
14    }
15 }
16 
17 class Worker extends Person{
18     function __construct($name,$sex,$job)
19     {
20           parent::__construct($name,$sex);   //調用Person構造                           函數,繼承Person
21     }
22 }

在這個過程中,分為兩部,一,定義Person類的屬性和方法 ?二,定義worker類,并調用Person類(繼承)

?

JS中的繼承與這個過程類似:先執行父級的構造函數,然后再添加子類的屬性和方法

?

JS中的繼承的寫法:

 1 function Person(name,sex)
 2 {
 3        this.name=name;
 4        this.sex=sex; 
 5 }                                            //定義構造函數
 6 Person.prototype.showName=function()
 7 {
 8       alert(this.name);
 9 };                                         //添加showName方法
10 Person.prototype.showSex=function()
11 {
12       alert(this.Sex);
13 };                                         //添加showSex方法
14 
15 function Worker(name,sex,job)
16 {
17       Person.call(this,name,sex); //構造函數偽裝,把Worker實例偽裝成Person實例,來繼承Person的屬性
18       this.job=job;    //單獨定義自己的屬性
19 }
20 
21 Worker.prototype=Person.prototype; //把Person.prototype指針賦給Worker.prototype
22 
23 Worker.prototype.showJob=function()
24 {
25       alert(this.job);
26 };      //定義自己的方法

call改變函數執行的this

在JS中全部對象都是引用,因此上面這段代碼中的21行Worker.prototype=Person.prototype;是引用的一個對象,當

 Worker.prototype.showJob=function()
 {
       alert(this.job);
 }; 

給Worker.prototype.showJob時就相當于Person.prototype也有showJob方法了,這樣不好,把父級都給覆蓋了,因此為了解決這個問題要想辦法不要把對象引用要復制,通過下面這段代買就能很好地解決這個問題

for(var attr in Person.prototype)
{Worker.prototype[attr]=Person.prototype[attr];
}

這樣就相當于把Person.prototype復制了一份給Worker.prototype,這樣給Worker.prototype加一個方法就不會影響到Person.prototype了。

而如果整站都需要作出改變,那只要修改父級就可以了,這樣會很方便,不容易出錯。

?

四,instanceof ? ? ...是...的實例

五,系統對象:1,本地對象(非靜態對象):需要實例,需要new ?-----------Object,Function,Array,String,Boolean,Number,RegExp,Error

? ? ? ? ? ? ? ? ? ? 2.內置對象(靜態對象): ? 不需要實例化,直接可以用,不需要new -------------global ? ? Math

? ? ? ? ? ? ? ? ? ? 3.宿主對象:BOM DOM

轉載于:https://www.cnblogs.com/ggbd-lie/archive/2012/11/22/2782651.html

總結

以上是生活随笔為你收集整理的面向对象编程(OOP)----BLUE大师JS课堂笔记(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

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