1. 程式人生 > >6.21

6.21

tint src 全局屬性 它的 自己 function 靈活性 重新 itl

一、fuction的四種方法

// 1, 方法調用模式
// 當一個函數被保存為對象的一個屬性時,我們稱之它為該對象的一個方法,那麽this被綁定到該對象上
var myObject={
name : "myObject" ,
value : 0 ,
increment : function(num){
this.value += typeof(num) === ‘number‘ ? num : 0;
return this;
} ,
toString : function(){
return ‘[Object:‘ + this.name + ‘ {value:‘ + this.value + ‘}]‘;


}
}
alert(myObject.increment(10).increment(20).toString()); // [Object:myObject {value:30}]
// 2, 函數調用模式
// 當一個函數並非一個對象的函數時,那麽它被當作一個函數來調用,this被綁定到全局對象上。這是語言設計的一個錯誤。倘若語言設計正確,當內部函數調用時,this應該仍然綁定到外部函數的this變量上
var myObject={
name : "myObject" ,
value : 0 ,
increment : function(num){
this.value += typeof(num) === ‘number‘ ? num : 0;

return this;
} ,
toString : function(){
return ‘[Object:‘ + this.name + ‘ {value:‘ + this.value + ‘}]‘;
},
getInfo: function(){
var self=this;
return (function(){
//return this.toString(); // 內部匿名函數中this指向了全局對象window, 輸出 [object Window]
return self.toString(); // 定義一個變量selft並給它賦值為this,那麽內部函數通過該變量訪問到指向該對象的this

})();
}
}
alert(myObject.increment(10).increment(20).toString()); // [Object:myObject {value:30}]
// 3, 構造器調用模式
// JavaScript是一門基於原型繼承的語言, 這意味著對象可以直接從其他對象繼承屬性, 該語言是無類別的。
// 如果一個函數前面帶上new來調用,那麽將創建一個隱藏連接到該函數的prototype成員的新對象,同時this將會被綁定到構造函數的實例上。
function MyObject(name){
this.name = name || ‘MyObject‘;
this.value=0;
this.increment = function(num){
this.value += typeof(num) === ‘number‘ ? num : 0;
};
this.toString = function(){
return ‘[Object:‘ + this.name + ‘ {value:‘ + this.value + ‘}]‘;
}
this.target = this;
}

MyObject.prototype.getInfo = function(){
return this.toString();
}
// 同時創建一個MyObject.prototype對象,myObject繼承了MyObject.prototype的所有的屬性, this綁定到了MyObject的實例上
var myObject = new MyObject();
myObject.increment(10);
alert(myObject.value); //10

var otherObject = new MyObject();
otherObject.increment(20);
alert(otherObject.value); //20

alert(myObject.target===myObject); // ture
alert(myObject.target.getInfo()); // [Object:MyObject {value:10}]
// 4, Apply 調用模式
// JavaScript是一門函數式的面向對象編程語言,所以函數可以擁有方法。 函數的apply方法,如同該對象擁有此方法,此時this指向該對象。
// apply接收兩個參數,第一個是要綁定的對象(this指向的對象),第二個是參數數組.
function MyObject(name){
this.name = name || ‘MyObject‘;
this.value = 0;
this.increment = function(num){
this.value += typeof(num) === ‘number‘ ? num : 0;
};
this.toString=function(){
return ‘[Object:‘+this.name+‘ {value:‘+this.value+‘}]‘;
}
this.target=this;
}
function getInfo(){
return this.toString();
}
var myObj = new MyObject();
alert(getInfo.apply(myObj)); //[Object:MyObject {value:0}], this指向myObj
alert(getInfo.apply(window)); //[object Window], this指向window

二、JSX

JSX就是Javascript和XML結合的一種格式。React發明了JSX,利用HTML語法來創建虛擬DOM。當遇到<,JSX就當HTML解析,遇到{就當JavaScript解析。

如下(JS寫法)

var child1 = React.createElement(‘li‘, null, ‘First Text Content‘);
var child2 = React.createElement(‘li‘, null, ‘Second Text Content‘);
var root = React.createElement(‘ul‘, { className: ‘my-list‘ }, child1, child2);

等價於(JSX寫法)

技術分享
var root =(
  <ul className="my-list">
    <li>First Text Content</li>
    <li>Second Text Content</li>
  </ul>
);

JSX 文件中的功能由 Web Service 進行 XML 映射時調用。WebLogic Workshop 擴展了 ECMAScript 語言,支持將 XML 作為本機類型,從而可以在腳本中直接處理 XML。

三、eval的使用方法

eval() 函數可計算某個字符串,並執行其中的的 JavaScript 代碼。

語法:eval(string)

參數描述
string 必需。要計算的字符串,其中含有要計算的 JavaScript 表達式或要執行的語句。

例如:<script type="text/javascript">
eval("x=10;y=20;document.write(x*y)")
document.write(eval("2+2"))
var x=10
document.write(eval(x+17))
</script>

四、AJAX

AJAX即“Asynchronous Javascript And XML”(異步JavaScript和XML),是指一種創建交互式網頁應用的網頁開發技術。 AJAX = 異步 JavaScript和XML(標準通用標記語言的子集)。 AJAX 是一種用於創建快速動態網頁的技術。 通過在後臺與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。 傳統的網頁(不使用 AJAX)如果需要更新內容,必須重載整個網頁頁面。

ajax() 方法通過 HTTP 請求加載遠程數據。

該方法是 jQuery 底層 AJAX 實現。簡單易用的高層實現見 $.get, $.post 等。$.ajax() 返回其創建的 XMLHttpRequest 對象。大多數情況下你無需直接操作該函數,除非你需要操作不常用的選項,以獲得更多的靈活性。

最簡單的情況下,$.ajax() 可以不帶任何參數直接使用。

註意:所有的選項都可以通過 $.ajaxSetup() 函數來全局設置。

語法:

jQuery.ajax([settings])
參數描述
settings

可選。用於配置 Ajax 請求的鍵值對集合。

可以通過 $.ajaxSetup() 設置任何選項的默認值。

步驟:

step1. 創建XMLHttpRequest對象,也就是創建一個異步調用對象;
step2. 創建一個新的HTTP請求,並指定改HTTP請求的方法、URL以及驗證信息;
step3. 設置響應HTTP狀態變化的函數;
step4. 發送HTTP請求;
step5. 獲取異步調用返回的數據;
step6. 使用javascript和DOM實現局部刷新;

五、http Request

http Request為傳輸請求

httpRequest對象常用的方法:

1. 獲得客戶機信息 getRequestURL方法返回客戶端發出請求時的完整URL。 getRequestURI方法返回請求行中的資源名部分。 getQueryString 方法返回請求行中的參數部分。 getRemoteAddr方法返回發出請求的客戶機的IP地址 getRemoteHost方法返回發出請求的客戶機的完整主機名 getRemotePort方法返回客戶機所使用的網絡端口號 getLocalAddr方法返回WEB服務器的IP地址。 getLocalName方法返回WEB服務器的主機名 getMethod得到客戶機請求方式

2.獲得客戶機請求頭

getHeader(string name)方法 getHeaders(String name)方法 getHeaderNames方法

3. 獲得客戶機請求參數(客戶端提交的數據) getParameter(name)方法 getParameterValues(String name)方法 getParameterNames方法 getParameterMap方法

六、什麽是事件

事件是可以被控件識別的操作,如按下確定按鈕,選擇某個單選按鈕或者復選框。每一種控件有自己可以識別的事件,如窗體的加載、單擊、雙擊等事件,編輯框(文本框)的文本改變事件,等等。

七、WINDOW

Window 對象表示瀏覽器中打開的窗口。

如果文檔包含框架(frame 或 iframe 標簽),瀏覽器會為 HTML 文檔創建一個 window 對象,並為每個框架創建一個額外的 window 對象。

註釋:沒有應用於 window 對象的公開標準,不過所有瀏覽器都支持該對象。

Window 對象集合

集合描述
frames[]

返回窗口中所有命名的框架。

該集合是 Window 對象的數組,每個 Window 對象在窗口中含有一個框架或 <iframe>。屬性 frames.length 存放數組 frames[] 中含有的元素個數。註意,frames[] 數組中引用的框架可能還包括框架,它們自己也具有 frames[] 數組。

Window 對象屬性

屬性描述
closed 返回窗口是否已被關閉。
defaultStatus 設置或返回窗口狀態欄中的默認文本。
document 對 Document 對象的只讀引用。請參閱 Document 對象。
history 對 History 對象的只讀引用。請參數 History 對象。
innerheight 返回窗口的文檔顯示區的高度。
innerwidth 返回窗口的文檔顯示區的寬度。
length 設置或返回窗口中的框架數量。
location 用於窗口或框架的 Location 對象。請參閱 Location 對象。
name 設置或返回窗口的名稱。
Navigator 對 Navigator 對象的只讀引用。請參數 Navigator 對象。
opener 返回對創建此窗口的窗口的引用。
outerheight 返回窗口的外部高度。
outerwidth 返回窗口的外部寬度。
pageXOffset 設置或返回當前頁面相對於窗口顯示區左上角的 X 位置。
pageYOffset 設置或返回當前頁面相對於窗口顯示區左上角的 Y 位置。
parent 返回父窗口。
Screen 對 Screen 對象的只讀引用。請參數 Screen 對象。
self 返回對當前窗口的引用。等價於 Window 屬性。
status 設置窗口狀態欄的文本。
top 返回最頂層的先輩窗口。
window window 屬性等價於 self 屬性,它包含了對窗口自身的引用。
  • screenLeft
  • screenTop
  • screenX
  • screenY
只讀整數。聲明了窗口的左上角在屏幕上的的 x 坐標和 y 坐標。IE、Safari 和 Opera 支持 screenLeft 和 screenTop,而 Firefox 和 Safari 支持 screenX 和 screenY。

Window 對象方法

方法描述
alert() 顯示帶有一段消息和一個確認按鈕的警告框。
blur() 把鍵盤焦點從頂層窗口移開。
clearInterval() 取消由 setInterval() 設置的 timeout。
clearTimeout() 取消由 setTimeout() 方法設置的 timeout。
close() 關閉瀏覽器窗口。
confirm() 顯示帶有一段消息以及確認按鈕和取消按鈕的對話框。
createPopup() 創建一個 pop-up 窗口。
focus() 把鍵盤焦點給予一個窗口。
moveBy() 可相對窗口的當前坐標把它移動指定的像素。
moveTo() 把窗口的左上角移動到一個指定的坐標。
open() 打開一個新的瀏覽器窗口或查找一個已命名的窗口。
print() 打印當前窗口的內容。
prompt() 顯示可提示用戶輸入的對話框。
resizeBy() 按照指定的像素調整窗口的大小。
resizeTo() 把窗口的大小調整到指定的寬度和高度。
scrollBy() 按照指定的像素值來滾動內容。
scrollTo() 把內容滾動到指定的坐標。
setInterval() 按照指定的周期(以毫秒計)來調用函數或計算表達式。
setTimeout() 在指定的毫秒數後調用函數或計算表達式。

Window 對象描述

Window 對象表示一個瀏覽器窗口或一個框架。在客戶端 JavaScript 中,Window 對象是全局對象,所有的表達式都在當前的環境中計算。也就是說,要引用當前窗口根本不需要特殊的語法,可以把那個窗口的屬性作為全局變量來使用。例如,可以只寫 document,而不必寫 window.document。

同樣,可以把當前窗口對象的方法當作函數來使用,如只寫 alert(),而不必寫 Window.alert()。

除了上面列出的屬性和方法,Window 對象還實現了核心 JavaScript 所定義的所有全局屬性和方法。

Window 對象的 window 屬性和 self 屬性引用的都是它自己。當你想明確地引用當前窗口,而不僅僅是隱式地引用它時,可以使用這兩個屬性。除了這兩個屬性之外,parent 屬性、top 屬性以及 frame[] 數組都引用了與當前 Window 對象相關的其他 Window 對象。

要引用窗口中的一個框架,可以使用如下語法:

frame[i]		//當前窗口的框架
self.frame[i]	//當前窗口的框架
w.frame[i]	//窗口 w 的框架

要引用一個框架的父窗口(或父框架),可以使用下面的語法:

parent		//當前窗口的父窗口
self.parent	//當前窗口的父窗口
w.parent 		//窗口 w 的父窗口

要從頂層窗口含有的任何一個框架中引用它,可以使用如下語法:

top		//當前框架的頂層窗口
self.top		//當前框架的頂層窗口
f.top		//框架 f 的頂層窗口

新的頂層瀏覽器窗口由方法 Window.open() 創建。當調用該方法時,應把 open() 調用的返回值存儲在一個變量中,然後使用那個變量來引用新窗口。新窗口的 opener 屬性反過來引用了打開它的那個窗口。

一般來說,Window 對象的方法都是對瀏覽器窗口或框架進行某種操作。而 alert() 方法、confirm() 方法和 prompt 方法則不同,它們通過簡單的對話框與用戶進行交互。

八、DOM

什麽是 DOM?
通過 JavaScript,您可以重構整個 HTML 文檔。您可以添加、移除、改變或重排頁面上的項目。

要改變頁面的某個東西,JavaScript 就需要對 HTML 文檔中所有元素進行訪問的入口。這個入口,連同對 HTML 元素進行添加、移動、改變或移除的方法和屬性,都是通過文檔對象模型來獲得的(DOM)。

在 1998 年,W3C 發布了第一級的 DOM 規範。這個規範允許訪問和操作 HTML 頁面中的每一個單獨的元素。

所有的瀏覽器都執行了這個標準,因此,DOM 的兼容性問題也幾乎難覓蹤影了。

DOM 被分為不同的部分(核心、XML及HTML)和級別(DOM Level 1/2/3):
Core DOM
定義了一套標準的針對任何結構化文檔的對象
XML DOM
定義了一套標準的針對 XML 文檔的對象
HTML DOM
定義了一套標準的針對 HTML 文檔的對象。

6.21