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