国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript面向對象入門

sean / 953人閱讀

摘要:在中是沒有這樣的關鍵字的,我們需要這樣做定義在方法內也就是內部,也可以看作成構造函數的變量,就是私有變量。移動氣球我們需要用到定時器。

什么是JavaScript?

我們可以從幾個方面去說JavaScript是什么:

基于對象

javaScript中內置了許多對象供我們使用【String、Date、Array】等等

javaScript也允許我們自己自定義對象

事件驅動

當用戶觸發執行某些動作的時候【鼠標單機、鼠標移動】,javaScript提供了監聽這些事件的機制。當用戶觸發的時候,就執行我們自己寫的代碼。

解釋性語言

[x] javaScript代碼是由瀏覽器解析的,并不需要編譯。

基于瀏覽器的動態交互技術

既然javaScript是由瀏覽器解析的,那么它肯定要基于瀏覽器。 javaScript讓網頁變得更加“靈活""

弱類型

[x] 像java、c++等編譯型語言,要先定義變量,后使用。javaScript能夠直接使用,不需要先定義

JavaScript變量類型

javaScript變量可分為三種類型:

基本類型【number、string、boolean】

javaScript是弱類型語言,在運行的時候才知道具體的類型是什么。所有類型都用var來修飾。

特殊類型【null、undefined】

當定義了變量,沒有任何賦值的時候,該變量就是undefined類型

復合類型【數組、對象、函數】

javaScript對象的類型

在JavaScript中對象的類型可分為4種:

內置對象【String、Math、Array】

自定義對象【程序員自己創建的對象】

瀏覽器對象【windows、document、history、status等等與瀏覽器相關的對象】

ActiveXObject(XMLHttpRequest)對象【異步對象,使用AJAX用到的對象,使用該對象與服務器進行異步交互】

定義函數三種方式

函數是屬于特殊類型的一種,在另外一篇博文已經講解了創建對象、創建類的幾種方式,可參考:http://blog.csdn.net/hon_3y/article/details/69362242

值得注意的是:javaScript定義函數的時候,參數的類型是不用聲明的!

正常方式

下面就定義了一個名稱為mysum的函數

        function mysum(num1,num2){
            return num1 + num2;
        }
        var myresult = mysum(100,200);
        alert("myresult="+myresult);
Function定義

在JavaScript中, 一切皆是對象,函數也可以用一個對象來代表:Function,我們可以使用Function來創建對象:

函數參數全都是字符串,最后一個字符串是方法體

        var youresult = new Function("num1","num2","return num1+num2");
        alert( youresult(1000,2000) );

由于這種方法寫起來并不好些,可讀性也不太好,因此很少使用【不推薦使用】

匿名創建函數

其實這種和第一種差不多,只不過是將一個無名的函數賦值給一個變量。那么這個變量就代表了這個函數。


var theyresult = function(num1,num2){
                            return num1 + num2;    
                         }
        alert( theyresult(10000,20000) );

theyresult這個變量就代表了函數。

創建對象 方式①

直接使用new Object()

  var obj = new Object();
方式②

使用空的{}大括號

    var obj2 = {};
測試

增加屬性,訪問屬性

我們要為創建的對象增加屬性和訪問屬性的值

使用.操作符增加屬性

JavaScript是弱類型的語言,可以動態的添加屬性。

    obj.age = 20;
    obj.name = "zhongfucheng";
    obj.say = function () {
        alert("hello");
    };
測試

使用.操作符訪問屬性
    var aa = obj.age;
    var bb = obj.name;
測試

使用[]操作符訪問屬性
    var aa = [obj["age"]];
    var bb = [obj["name"]];
測試

創建類 方式①

使用function來模擬創建類,function充當了構造函數

        //測試函數
        function test() {

            var teacher = new Teacher();

        }

        //使用function來模擬類
        function Teacher() {

        }
測試

方式②

上面的function來模擬類很容易和函數混淆。

我們一般這樣做:用一個變量記住一個匿名的function當做是類,function充當了構造函數

        function test() {

            var teacher = new Teacher();
            
        }
        var Teacher = function () {


        };
測試

方式③

使用JSON語法來創建類,也就是對象直接量定義方法


        var obj = {
            age: 20,
            str: "zhongfucheng",
            method:function () {
                alert("aaa");
            }

        };
測試

公有屬性和方法

我們創建公有屬性應該在類中指定,創建公有方法應該使用原型對象prototype

prototype定義的屬性就類似于Java的靜態成員:在原型對象上定義了屬性,擁有這個原型對象的function所創建的對象也擁有定義的屬性!所以,我們方法中就使用prototype

        var obj = function Teacher(name) {
            this.name = name;
            if( typeof obj._init=="undefined") {
                obj.prototype.setName = function (name) {
                    this.name = name;
                };

                obj.prototype.getName = function () {
                    alert(this.name);
                };
            }

            obj._init = true;
        };

創建兩個不同的Teacher對象,name屬性是不一樣的。而它們共享同一份setName()和getName()方法

值得注意的是:prototype定義的屬性只可讀的。如果你想要使用具體對象寫prototype的屬性,實際上并不是寫,而是重新為該類定義了一個同名(和prototype同名)的屬性。在讀取同名屬性的時候,優先讀取對象上的屬性,而不是prototype的。

私有屬性

我們在Java中,定義私有屬性是通過關鍵字private來修飾的。。

在JavaScript中是沒有這樣的關鍵字的,我們需要這樣做:定義在方法內【也就是function內部,也可以看作成構造函數】的變量,就是私有變量。

        var obj = function Teacher(name) {

            //這是私有屬性,外界不能訪問
            var age = 23;

            //這是公有屬性,外界可以訪問
            this.name = name;
            
            //想要訪問私有變量age,只能在這里編寫方法來訪問。其余的地方都不行!

            //我們通常就是在這里編寫公有方法來訪問私有屬性

        };
靜態屬性和方法

在JavaScript中定義靜態屬性其實就是通過prototype原型對象來定義的

定義靜態的時機:

當類的某個值與對象無關期望所有位置看到的結果是一樣的時候,就可以定義為類靜態屬性

如果類的一個方法做的是和具體對象無關的操作,而是做一些工作操作的時候,就可以將這個方法定義為靜態的類方法

    //靜態屬性TYPE
    Book.TYPE = “IT”;

    Book.print = function(){alert(Book.TYPE);}
JavaScript中的for in循環

在學習AJAX的時候,發現JavaScript中for in循環,這種循環對于遍歷JSON是很好用的。于是寫下了這篇博文

for in循環本質上是forEach循環,它主要有兩個作用

遍歷數組

遍歷JavaScript對象

遍歷數組

當使用for in來遍歷數組的時候,它的循環計數器是數組元素的索引值

    var a = ["a", "b", "c"];
    for(var index in a) {
        alert(index);
    }

效果:

遍歷JavaScript對象

當使用for in來遍歷對象的時候,它的循環計數器是對象的屬性名

    //對象json上,包含了兩個對象a和b屬性
    var json = {a:{num:1},b:{num:2}};

    for(var name in  json){
        alert(name);
    }
效果

JS打氣球游戲

在B站中看見了一個JS大氣球這么一個教程,才知道原來JS+HTML5+CSS3能那么有趣。但是視頻中沒并沒有給出源碼。于是在別人的博客中搜到了對應的源碼以及他自己實現的思路,該博主對其進行了改編。

http://www.cnblogs.com/morang/p/7636148.html

以上的博文有源碼的下載。下面我就直接貼上源碼了。思路就在博文中。



    
        氣球大戰
        
        
    
    
        

最高連擊:0

本次游戲:0

看了視頻也學到了之前一直沒有注意的東西:

CSS3很厲害啊,能將方形的div轉成是橢圓形的[也就是氣球的形狀],還有盒子的陰影設置。

使用偽元素就可以不用直接在html中設置標簽了。配合CSS3也能夠做出對應的樣式。

使用實體邊框配合CSS3也可以做出不同的形狀樣式

在生成元素的時候,可以先將要生成的元素加入到文檔片段中,再使用文檔片段來進行一次性添加到body上,這樣性能會好很多!

使用~~運算符能夠取整數

限定氣球的邊界就可以使用max和min函數來進行限定。這也是很好用的。

移動氣球我們需要用到定時器。

使用call主動調用方法,把目標對象傳遞過去的話,我們就可以使用this指針了。

在定時器中使用bind(this),就可以在定時器中使用this指針的,因為定時器默認是由瀏覽器window來進行調用的,默認是不能使用this的

綁定單擊事件的時候,不要使用循環來進行綁定,這樣太耗費性能了,我們可以使用監聽事件來進行一次綁定。

在遍歷元素數組的時候,條件是元素數組的長度時,我們可以先把該元素數組的長度初始化出來,那么也可以提升性能!不然就每次判斷前都要去查詢數據的長度!

for(var i=0,len = array.length; i

如果文章有錯的地方歡迎指正,大家互相交流。習慣在微信看技術文章,想要獲取更多的Java資源的同學,可以關注微信公眾號:Java3y

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93037.html

相關文章

  • Javascript面向對象入門到重新入門--關于繼承

    摘要:這個構造函數的不管從調用方式還是內部寫法就都很有的感覺,但是從用途上來說,它其實更靠近的概念是中的工廠方法。到這里,所有關于繼承的東西講完了,接下來準備準備說說當中的封裝 所謂的對象,就是抽象化的數據本身 一個面向對象轉向面向原型的困惑 我發現Javascript這門語言每次翻開都會帶給人新感受,尤其是看完其他語言的面向對象再來看它,但是如果你也是過來人就一定記得教科書里面冗長乏味的...

    3fuyu 評論0 收藏0
  • 【連載】前端個人文章整理-從基礎到入門

    摘要:個人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現在已經一年的時間了,由于工作比較忙,更新緩慢,后面還是會繼更新,現將已經寫好的文章整理一個目錄,方便更多的小伙伴去學習。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個人前端文章整理 從最開始萌生寫文章的想法,到著手...

    madthumb 評論0 收藏0
  • 給自己定個小目標比如14天入門JavaScript

    摘要:作為一個前端開發,大多數面對的都是學不好,不知道如何學,或者說容易半途而廢,這也是說我自己。這天定位于了解能夠簡單讀懂或者使用的人,如果沒有請參照以下網址,學習基礎知識。如有錯誤或者建議歡迎斧正。 作為一個前端開發,大多數面對的都是學不好JavaScript,不知道如何學,或者說容易半途而廢,這也是說我自己。一年以來接觸的JS都是零零散散的,懂或似懂非懂,花點時間好好鞏固下,有興趣的跟...

    Near_Li 評論0 收藏0
  • 給自己定個小目標比如14天入門JavaScript

    摘要:作為一個前端開發,大多數面對的都是學不好,不知道如何學,或者說容易半途而廢,這也是說我自己。這天定位于了解能夠簡單讀懂或者使用的人,如果沒有請參照以下網址,學習基礎知識。如有錯誤或者建議歡迎斧正。 作為一個前端開發,大多數面對的都是學不好JavaScript,不知道如何學,或者說容易半途而廢,這也是說我自己。一年以來接觸的JS都是零零散散的,懂或似懂非懂,花點時間好好鞏固下,有興趣的跟...

    wuyangchun 評論0 收藏0
  • 給自己定個小目標比如14天入門JavaScript

    摘要:作為一個前端開發,大多數面對的都是學不好,不知道如何學,或者說容易半途而廢,這也是說我自己。這天定位于了解能夠簡單讀懂或者使用的人,如果沒有請參照以下網址,學習基礎知識。如有錯誤或者建議歡迎斧正。 作為一個前端開發,大多數面對的都是學不好JavaScript,不知道如何學,或者說容易半途而廢,這也是說我自己。一年以來接觸的JS都是零零散散的,懂或似懂非懂,花點時間好好鞏固下,有興趣的跟...

    opengps 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<