當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
笔记之_java整理JavaScript
生活随笔
收集整理的這篇文章主要介紹了
笔记之_java整理JavaScript
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、javascript 面向?qū)ο筮@一塊
1)、 javascript的基本數(shù)據(jù)類型有哪些?Number (數(shù)字) 1 1.2String (字符串) ‘’ “” Boolean 布爾 true falseUndefined 未定義Null 空
2)、javascript的引用數(shù)據(jù)類型有哪些?Object {}、 函數(shù) function 、 數(shù)組 []
2、javascript定義對象,動態(tài)擴(kuò)沖里面的變量或者屬性var a =new Object(); //實例化一個對象a.id=1001; //內(nèi)存中自動增加一個Number名為id變量a.name=’text’; //內(nèi)存中自動增加一個String名為name的變量上面的 new Object() 等價于 {} var a={};
3、以下結(jié)果是什么? 基本數(shù)據(jù)類型引用不會受影響
var a1=112;
var a2=a1;
a2=2;
alert(a1); //112
alert(a2); // 2
4、以下結(jié)果是什么? 引用數(shù)據(jù)類型var a1={}; a1.id=1001;var a2=a1; a2.id=1;|alert(a1.id +”,”+ a2.id); // 1 , 1 5、以下結(jié)果是什么?function sum( a){a=a+10;return a;}
調(diào)用: var a=2; //基本數(shù)據(jù)類型var b=sum(a);alert(a); //2alert(b); //12
6、以下的結(jié)果是什么
function setName( obj ){obj.id=1001; obj.name=”test”;
}
var a={ “id” :1 }; //實例化一個對象名為a,默認(rèn)它有一個id值為1
setName( a );
alert( a.id); // 1001
alert(a.name); // test7、以下的結(jié)果是什么
function setName( obj ){obj.id=1001;
obj=new Object(); //局變實例化,方法里面local再創(chuàng)建obj對象,不會影響全局的objobj.id=23;}
var a={ “id” :1 }; //實例化一個對象名為a,默認(rèn)它有一個id值為1
setName( a );
alert( a.id); // 1001
alert(a.name); // undefined
8、以下的結(jié)果是什么var sum=100;
function setName( ){var sum=0;return sum+5;}var a=setName();alert(a); //結(jié)果是5
//global全局變量 local局部變量
//調(diào)用方法時兩個sum變量名一樣,找作用于最近的sum
9、以下結(jié)果是什么?function sum(){return arguments[0]+arguments[1];
}
調(diào)用 alert( sum(1,2) ); //3
10、javascript 使用 typeof 檢查類型返回類型var a=2;alert( typeof a); //string, number,boolean,undefined ,Object
11、使用 instanceof 判斷它是不是某種類型,返回真假值
var a={};alert(a instanceof Array ); //false alert(a instanceof Object ); //true
12、javascript == 與 === 是有區(qū)別== 比較2個變量的值是否相等 (可能發(fā)生值的類型轉(zhuǎn)換)=== 比較2個變量的類型和值都要相等var a="2"; var b=2;if(b==a){console.log("==是對的");console.log("a的類型:"+ (typeof a));console.log("b的類型:"+ (typeof b)); }if(a===b){console.log("a===b:對的");}else{console.log("a===b:錯誤");}
小結(jié):基本類型值在內(nèi)存中占據(jù)固定大小的空間,因此被保存在棧內(nèi)存中引用類型的值是對象,保存在堆內(nèi)存中
13、使用js創(chuàng)建一個對象, 名稱叫Person,有2個變量,一個叫id,一個叫name,并且為id和name提供get/set方法,并且?guī)⒌臉?gòu)造函數(shù)?js創(chuàng)建對對象的方法: new Object(); {}
帶參的構(gòu)造函數(shù): 函數(shù)是有參數(shù)的,參數(shù)2個
對象里面會有2個變量名為id,name,并且 每一個都有g(shù)etId, setId getName,setName
調(diào)用:var p=Person(1001,”test”);p.setName(“xx”);
function Person(id, name){this.pid=id; //函數(shù)內(nèi)部 定義變量 局變變量this.pname=name; //函數(shù)內(nèi)部 定義變量 局變變量getId=function(){return this.pid;} setId=function(vid){this.pid=vid;}getName=function(){return this.pname;}setName=function(vname){this.pname=vname;}return this;
}
14、Array 數(shù)組/集合 它的常用方法
concat() 連接兩個或更多的數(shù)組,并返回結(jié)果。
join()把數(shù)組的所有元素放入一個字符串。元素通過指定的分隔符進(jìn)行分隔。
pop()刪除并返回數(shù)組的最后一個元素
shift()刪除并返回數(shù)組的第一個元素
push()向數(shù)組的末尾添加一個或更多元素,并返回新的長度。
unshift()向數(shù)組的開頭添加一個或更多元素,并返回新的長度。
reverse()顛倒數(shù)組中元素的順序。
slice()從某個已有的數(shù)組返回選定的元素
sort()對數(shù)組的元素進(jìn)行排序
splice()刪除元素,并向數(shù)組添加新元素。
toString()把數(shù)組轉(zhuǎn)換為字符串,并返回結(jié)果。
valueOf()返回數(shù)組對象的原始值
every()對數(shù)組的每一項運(yùn)動給定函數(shù),如果該函數(shù)對每一項都返回true,則返回true
filter()對數(shù)組的每一項運(yùn)動給定函數(shù),返回該函數(shù)會返回true的項組成的數(shù)組
forEach()對數(shù)組的每一項運(yùn)動給定函數(shù),這個方法沒有返回值
map()對數(shù)組的每一項運(yùn)動給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組
some()對數(shù)組的每一項運(yùn)動給定函數(shù),如果該函數(shù)對任一項返回true,則返回true
<script> //1、定義數(shù)組 相當(dāng)于是 var arr=[];var arr=new Array();//2、往數(shù)組最后面插入數(shù)據(jù)arr.push(10);arr.push(11);arr.push(12,13,14,15);console.log(arr.toString());//3、往最前面插入數(shù)據(jù)arr.unshift(20,21,20,21); console.log(arr.toString());//4、從后面出棧 刪除var c=arr.pop();console.log("刪除的是"+c);console.log(arr.toString());//5、從頂部移出var d=arr.shift();console.log("刪除的是"+d);console.log(arr.toString());//6、取出指定數(shù)組下標(biāo)范圍的數(shù)組var newA=arr.slice(4);console.log(newA);//7、取得 下標(biāo)4開始取,取2個var newB=arr.slice(4,6);console.log(newB);//8、排序
arr.sort();arr.reverse(); //降序
console.log(arr);//9、 以-號連接出來console.log( arr.join("-"));</script>15、eval() 用于動態(tài)執(zhí)行代碼 把字符串強(qiáng)制轉(zhuǎn)換成可以運(yùn)行的代碼var s=”2+3”;alert(s); //結(jié)果: 2+3alert( eval(s ) ); //結(jié)果:5
var s1=”alert(‘111’); ”;alert( eval( s1) );var s2=”{‘id’: 1001}”; //把字符串轉(zhuǎn)為對象var obj= eval( “(“ + s2 + ”)” );
16、面向?qū)ο?1)創(chuàng)建對象語法有很多種1>var person=new Object();person.name=”Nicholas”;
person.age=29;
person.job=”Software engineer”;
person.sayName=function(){alert(this.name);
}json格式:2>var person={
name:”Nicholas”;
age:29;
job:”Software engineer”;
sayName:function(){alert(this.name);
}
}3>function person(id)={
this.pid=id;
getId=function(){return this.pid;
}
setId=function(vid){this.pid=vid;
}
return this;
}4>function createPerson(id)={
var o=new Object();
o.name=name;
o.age=age;
o.job=job;
o.sayName=function(){alert(this.name);
};
return o;
}5>function person(id)={
this.pid=id;
getId=function(){return this.pid;
}
setId=function(vid){this.pid=vid;
}
}
var a=new Person(100);//必須要new Person6>function person(id)={
this.pid=id;
getId=function(){return this.pid;
}
setId=function(vid){this.pid=vid;
}
return this;
}
var a=new Person(100);
var a= Person(100);//可以new Person也可以不new Person2)、為某個對象創(chuàng)建只讀的屬性var person={};
Object.defineProperty(person,”name”,{writable:false,
value:”Nicholas”
});
alert(person.name); //”Nicholas”
person.name=”Greg”;
alert(person.name); //”Nicholas”3)調(diào)用函數(shù)語法3種:console.log();谷歌瀏覽器的打印輸出方法1>調(diào)用方式var a=new person(100);console.log(“構(gòu)造函數(shù)調(diào)用:”+a.getId());2>作為Windows的對象person(102);console.log(“當(dāng)成了windows了:”+windows.getId());3>動態(tài)調(diào)用(委托)var o=new Object();person.call(o,105);console.log(“委托別人調(diào)用的:”+o.getId());4)
原型模式:我們創(chuàng)建的每個對象prototype(原型)屬性,這個屬性是一個指針,指向一個對象,而這個對象的用途包括可以有特定類型的所有實例共享的屬性和方法。如果按字面意思來理解,那就是prototype就是通過調(diào)用構(gòu)造函數(shù)的那個對象實例的原型對象。使用原型對象的好處是可以讓所有對象實例共享它所包含的屬性和方法。換句話說,不必在構(gòu)造函數(shù)中定義對象實例的信息,而是可以將這些信息直接添加到原型對象中
function person(){
}
person.prototype.name=”Nicholas”;
person.prototype.age=29;
person.prototype.job=”Software engineer”;
person.prototype.sayName=function(){alert(this.name);
}
var p1=new person();
var p2=new person();
只創(chuàng)建一個實例對象,對象變量對指向這個對象,對象屬性和方法改變時,就在下面保存改變變量,實例對象只有一個并且不會改變
原型模式最大的好處就是最大限度的節(jié)省內(nèi)存空間function person(){
this.name=name;
this.age=age;
this.job=job;
this.sayName=function sayName(){alert(this.name);
}
var s1=new person(1,23,”a”);
var s2=new person(2,24,”b”);
創(chuàng)建實例就開辟新的空間
小結(jié):
工廠模式,使用簡單的函數(shù)創(chuàng)建對象,為對象添加屬性和方法,然后返回對象。這個模式后來被構(gòu)造函數(shù)所取代
構(gòu)造函數(shù)模式,可以創(chuàng)建自定義引用類型,可以像創(chuàng)建內(nèi)置對象實例一樣new操作符。不過,構(gòu)造函數(shù)模式也有缺點,即它的每個成員都無法得到復(fù)用,包括函數(shù)。由于函數(shù)可以不局限于任何對象(即與對象具有松散耦合的特點),因此沒有理由不在多個對象間共享函數(shù)
原型模式,使用構(gòu)造函數(shù)的prototypes屬性來指定那些該共享的屬性和方法。組合使用構(gòu)造函數(shù)模式和原型模式時,使用構(gòu)造函數(shù)定義實例屬性,而使用原型定義共享的屬性和方法
Attribute與Parameter區(qū)別:
request.getParameter()方法傳遞的數(shù)據(jù),會從Web客戶端傳到Web服務(wù)器端,代表HTTP請求數(shù)據(jù)。request.getParameter()方法返回String類型的數(shù)據(jù)。
request.setAttribute()和getAttribute()方法傳遞的數(shù)據(jù)只會存在于Web容器內(nèi)部,在具有轉(zhuǎn)發(fā)關(guān)系的Web組件之間共享。這兩個方法能夠設(shè)置Object類型的共享數(shù)據(jù)。
request.getParameter()取得是通過容器的實現(xiàn)來取得通過類似post,get等方式傳入的數(shù)據(jù)。
request.setAttribute()和getAttribute()只是在web容器內(nèi)部流轉(zhuǎn),僅僅是請求處理階段。
getAttribute是返回對象,getParameter返回字符串
jsp九大內(nèi)置對象:
1>out 向客戶端輸出數(shù)據(jù),字節(jié)流.如out.print(" dgaweyr");
2>request 接收客戶端的http請求.
String getParameter(String name):得到表單參數(shù)名name的值.
String[] getParameterValues(String name):(得到String[]復(fù)選框時常用).
setAttribute(String name,Object obj):設(shè)置屬性名為name,屬性值為obj.
getAttribute(String name);得到屬性值.3>response:封裝jsp產(chǎn)生的回應(yīng),然后發(fā)送到客戶端以響應(yīng)客戶的請求.重定向跳轉(zhuǎn)任意界面.(服務(wù)器跳轉(zhuǎn))
addCookie(Cookie cookie):
sendRedirect("/wel.jsp"):跳轉(zhuǎn)到指定頁面4>session:用于保存用戶信息,跟蹤用戶行為,當(dāng)前打開的瀏覽器內(nèi),多個頁面共享數(shù)據(jù). session對象指的是客戶端與服務(wù)器的一次會話,從客戶連到服務(wù)器的一個WebApplication開始,直到客戶端與服務(wù)器斷開連接為止.它是HttpSession類的實例.
setAttribute(String name,Object obj):設(shè)置屬性名為name,屬性值為obj.
getAttribute(String name):得到屬性值.5>application對象:實現(xiàn)了用戶間數(shù)據(jù)的共享,可存放全局變量.它開始于服務(wù)器的啟動,直到服務(wù)器的關(guān)閉,在此期間,此對象將一直存在;這樣在用戶的前后連接或不同用戶之間的連接中,可以對此對象的同一屬性進(jìn)行操作;在任何地方對此對象屬性的操作,都將影響到其他用戶對此的訪問.服務(wù)器的啟動和關(guān)閉決定了application對象的生命.它是ServletContext類的實例.session,application,request的區(qū)別:
一個項目中session盡量少用幾個,因為過多的session會影響程序的執(zhí)行效率.它主要用于保存登錄信息(用戶信息,權(quán)限,資源)即頻繁使用的信息.
application: 用于多個瀏覽器之間共享數(shù)據(jù),多個用戶共享該對象,可以做計數(shù)器.它的用法與session完全一樣.
數(shù)據(jù)范圍:
application(服務(wù)器關(guān)閉時失效)>session(瀏覽器關(guān)閉時失效)>request(只能用于兩個跳轉(zhuǎn)頁面之間)6>page對象代表jsp這個實體本身,即當(dāng)前頁面有效.相當(dāng)于Java中的this.
數(shù)據(jù)范圍:page<session<application7>.exception:代表運(yùn)行時的異常.
在會發(fā)生異常的頁面加入指令:<%@ page errorPage="處理錯誤的頁面.jsp"%>
在處理異常的頁面寫入:<%@ page isErrorPage="true"%>8>.pageContext對象 pageContext對象提供了對JSP頁面內(nèi)所有的對象及名字空間的訪問,也就是說他可以訪問到本頁所在的SESSION,也可以取本頁面所在的application的某一屬性值,他相當(dāng)于頁面中所有功能的集大成者,它的本類名也叫pageContext.9>.config jsp對應(yīng)的servlet的配置,可以得到web.xml中的初使化參數(shù).
jsp七大動作:
一:include 動態(tài)包含(分別編譯):
用jsp:include動作實現(xiàn)<jsp: include page="included.jsp" flush="true" />
它總是會檢查所含文件中的變化,適合用于包含動態(tài)頁面,并且可以帶參數(shù)。flush屬性: 用true ,表示頁面可刷新。默認(rèn)為false;二:useBean動作(jsp頁面使用javaBean的第二種方式):
<jsp:useBean id="對象名" class="包名.類名" scope="作用范圍(request/page/application/session)"/>
作用域默認(rèn)為page(本頁面有效).
三:getProperty動作(name為useBean動作中的id).
從對象中取出屬性值:<jsp:getProperty name="javaBean對象" property="javaBean對象屬性名" />
四:setProperty動作(name為useBean動作中的id):
為對象設(shè)置屬性值:<jsp:setProperty name="javaBean對象" property="javaBean對象屬性名" value=http://www.hake.cc/kf/201109/"值"/>
為對象設(shè)置屬性值:<jsp:setProperty property="javaBean對象屬性名" name="javaBean對象" param="username"/>
(param="username" 相當(dāng)于 value=http://www.hake.cc/kf/201109/<%=request.getParameter("username")%>)
五:param動作(傳遞參數(shù))):
到達(dá)跳轉(zhuǎn)頁面可以通過 request.getParameter(“參數(shù)名”)方式取出參數(shù)值
<jsp:include page="轉(zhuǎn)向頁面的url" ><jsp:param name="參數(shù)名1" value=http://www.hake.cc/kf/201109/"參數(shù)值1">
<jsp:param name="參數(shù)名2" value=http://www.hake.cc/kf/201109/"參數(shù)值2">
...........</jsp:include>
或:
<jsp:forward page="轉(zhuǎn)向頁面的url" ><jsp:param name="參數(shù)名1" value=http://www.hake.cc/kf/201109/"參數(shù)值1"><jsp:param name="參數(shù)名2" value=http://www.hake.cc/kf/201109/"參數(shù)值2">
...........
</jsp:forward>
六:forward動作:
跳轉(zhuǎn)頁面:<jsp:forward page="login.jsp" />
七:plugin動作:<jsp:plugin>:用于指定在客戶端運(yùn)行的插件
JSP三大指令之:
一:page指令:
1.指定頁面編碼.例:
<%@ page language="java" contentType="text/html;charset=gbk" pageEncoding="gbk" %>
2.導(dǎo)入包,例:
<%@ page import="java.util.*,java.text.*" %>.
二:include 指令
靜態(tài)包含(統(tǒng)一編譯):<%@ include file="included.jsp"%>三:taglib
Jsp中的靜態(tài)包含與動態(tài)包含
動態(tài)include(<jsp: include page="included.jsp"/>)
靜態(tài)include(<%@ include file="included.jsp"%>)
1. 靜態(tài)include的結(jié)果是把其他jsp引入當(dāng)前jsp,兩者合為一體,可以達(dá)到數(shù)據(jù)的共享即可以說是統(tǒng)一編譯的,而
動態(tài)include的結(jié)構(gòu)是兩者獨立的,直到輸出時才合并即為分別編譯的.
2.動態(tài)include的jsp文件獨立性很強(qiáng),是一個單獨的jsp文件,需要使用的對象,頁面設(shè)置,都由自己創(chuàng)建,而靜態(tài)include純粹是把代碼寫在外面的一種共享方法,所有的變量都是可以和include它的主文件共享,兩者高度緊密結(jié)合,不能 有變量同名的沖突.而頁面設(shè)置也可以借用主文件的.
3.動態(tài)包含總是檢查被包含頁面的變化,靜態(tài)包含不一定檢查被包含頁面的變化.
4.動態(tài)包含可帶參數(shù),靜態(tài)包含不能帶參數(shù).如(<jsp: include page="included.jsp">放入?yún)?shù)</jsp:include>);1、全局變量和局變量在一起的時候,結(jié)果是什么var sum=100;function setName(){var sum=0;return sum+5;}alert( setName);//5
2、function無參數(shù),可以使用內(nèi)置的參數(shù)的數(shù)組來取值function sum( ){return arguments[0]+ arguments[1]; }alert( sum(2,3) );
3、==和===的區(qū)別var a = "2";var b = 2;if(b == a) {console.log("==是對的");console.log("a的類型:" + (typeof a));console.log("b的類型:" + (typeof b));}if(a === b) {console.log("a===b:對的")} else {console.log("a===b:錯誤")}var c = true;if(c == "1") {console.log("true==1是成立的");} else {console.log("true==1是不的");}4、方法中私有方法var a=10;function swapnum(){ var b=5;//私有方法
function swap(){var temp=b;b=a;a=temp;}//在內(nèi)部實現(xiàn)調(diào)用
swap();} swapnum()console.log( a );
5、使用with關(guān)鍵字function buildUrl(){var arg="?degub=true";with(location){var url=href+arg;}return url;}var a=buildUrl();console.log(a);
6、創(chuàng)建對象//構(gòu)造函數(shù)
function Person(id) {this.pid = id;this.getId = function() {return this.pid;}this.setId = function(vid) {this.pid = vid;}return this;}// 調(diào)用var a = new Person(100); //創(chuàng)建一個對象
console.log(a.getId());a.setId(20);console.log(a.getId());7、Array數(shù)組//1、定義數(shù)組 相當(dāng)于是 var arr=[];var arr=new Array();//2、往數(shù)組最后面插入數(shù)據(jù)arr.push(10);arr.push(11);arr.push(12,13,14,15);console.log(arr.toString());//3、往最前面插入數(shù)據(jù)arr.unshift(20,21,20,21); console.log(arr.toString());//4、從后面出棧 刪除//var c=arr.pop();// console.log("刪除的是"+c);//console.log(arr.toString());//5、從頂部移出// var d=arr.shift();//console.log("刪除的是"+d);//console.log(arr.toString());//6、取出指定數(shù)組下標(biāo)范圍的數(shù)組var newA=arr.slice(4);console.log(newA);//7、取得 下標(biāo)4開始取,取2個var newB=arr.slice(4,6);console.log(newB); //8、排序
arr.sort();arr.reverse(); //降序
console.log(arr); //9、 以-號連接出來console.log( arr.join("-"));
8、使用系統(tǒng)默認(rèn)的方法為 變量添加 屬性或者方法var person = {_id: 0,_name: ""};//定義3個變量id,name,age (只讀的)
Object.defineProperties(person, {id: {get: function() {return this._id;},set: function(newValue) {this._id = newValue;}},name: {get: function() {return this._name;},set: function(newValue) {this._name = newValue;}},age: {value: 18,writable: false}});//調(diào)用person.id = 1001;person.name = "ttt";person.age = 23;console.log(person.id)console.log(person.name)console.log(person.age)
9、對象的調(diào)用有3種方式//構(gòu)造函數(shù)
function Person(id) {this.pid = id;this.getId = function() {return this.pid;}this.setId =function(vid) {this.pid = vid;} }// 1、調(diào)用方式var a = new Person(100); //創(chuàng)建一個對象console.log("構(gòu)造函數(shù)調(diào)用:"+a.getId());//2、做為window的對象Person(102);console.log( "當(dāng)成window對象了:"+window.getId());//3、動態(tài)調(diào)用(委托)var o=new Object(); //我要委托的人Person.call(o, 105);console.log("委托別人調(diào)用:"+ o.getId()); \彈框:1)boolean boo=new BookManageBiz().delete(bm);String info=boo?"刪除成功":"刪除失敗";String str="<script type='text/javascript'>alert('"+info+"');window.location.href=
"+req.getContextPath()+"/findall.do';</script>";PrintWriter out=resp.getWriter();out.print(str);out.flush();out.close();2)<a href="javascript:mydelete(${b.b_Id})">刪除</a><script type="text/javascript">function mydelete(id){if(confirm("你確定要刪除嗎?")){window.location.href="/20170519/delete.do?id="+id;}}
</script>3)<script type="text/javascript">window.onload = function() {document.getElementById("myForm").onsubmit = function() {var arr=["b_name","b_author","b_time"];var a=["圖書名稱不能為空","作者姓名不能為空","購買日期不能為空"];for(var i=0;i<arr.length;i++){if(myId(arr[i]).length==0){alert(a[i]);return false;}}if(myId("b_time").length>0){var reg=/\d{4}-([1-12]|\d{2})-([1-9]|\d{2})/;if(!reg.test(myId("b_time"))){alert("日期格式錯誤,必須為yyyy-MM-dd");return false;}}return true;}function myId(id){return document.getElementById(id).value;}}
</script>
?
轉(zhuǎn)載于:https://www.cnblogs.com/by-1642146903/p/7860224.html
總結(jié)
以上是生活随笔為你收集整理的笔记之_java整理JavaScript的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AC日记——字符串P型编码 openju
- 下一篇: Spring的两种动态代理:Jdk和Cg