摘要:在中是沒有這樣的關鍵字的,我們需要這樣做定義在方法內也就是內部,也可以看作成構造函數的變量,就是私有變量。移動氣球我們需要用到定時器。
什么是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這門語言每次翻開都會帶給人新感受,尤其是看完其他語言的面向對象再來看它,但是如果你也是過來人就一定記得教科書里面冗長乏味的...
摘要:個人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現在已經一年的時間了,由于工作比較忙,更新緩慢,后面還是會繼更新,現將已經寫好的文章整理一個目錄,方便更多的小伙伴去學習。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個人前端文章整理 從最開始萌生寫文章的想法,到著手...
摘要:作為一個前端開發,大多數面對的都是學不好,不知道如何學,或者說容易半途而廢,這也是說我自己。這天定位于了解能夠簡單讀懂或者使用的人,如果沒有請參照以下網址,學習基礎知識。如有錯誤或者建議歡迎斧正。 作為一個前端開發,大多數面對的都是學不好JavaScript,不知道如何學,或者說容易半途而廢,這也是說我自己。一年以來接觸的JS都是零零散散的,懂或似懂非懂,花點時間好好鞏固下,有興趣的跟...
摘要:作為一個前端開發,大多數面對的都是學不好,不知道如何學,或者說容易半途而廢,這也是說我自己。這天定位于了解能夠簡單讀懂或者使用的人,如果沒有請參照以下網址,學習基礎知識。如有錯誤或者建議歡迎斧正。 作為一個前端開發,大多數面對的都是學不好JavaScript,不知道如何學,或者說容易半途而廢,這也是說我自己。一年以來接觸的JS都是零零散散的,懂或似懂非懂,花點時間好好鞏固下,有興趣的跟...
摘要:作為一個前端開發,大多數面對的都是學不好,不知道如何學,或者說容易半途而廢,這也是說我自己。這天定位于了解能夠簡單讀懂或者使用的人,如果沒有請參照以下網址,學習基礎知識。如有錯誤或者建議歡迎斧正。 作為一個前端開發,大多數面對的都是學不好JavaScript,不知道如何學,或者說容易半途而廢,這也是說我自己。一年以來接觸的JS都是零零散散的,懂或似懂非懂,花點時間好好鞏固下,有興趣的跟...
閱讀 1074·2021-11-16 11:45
閱讀 2708·2021-09-27 13:59
閱讀 1315·2021-08-31 09:38
閱讀 3143·2019-08-30 15:52
閱讀 1315·2019-08-29 13:46
閱讀 2085·2019-08-29 11:23
閱讀 1631·2019-08-26 13:47
閱讀 2476·2019-08-26 11:54