新普金娱乐网址


认清性能问题

数学泛函编程(1)-泛函编程是何等落实的

DBA_基本Bash语法汇总(汇总)

  • 十月 16, 2018
  • 数学
  • 没有评论

 2014-06-26 Created By
BaoXinjian

相同、JavaScript事件详解

图片 1一、变量

1、事件流:描述的是以页面被结束事件的逐一


    事件传递出星星点点种艺术:冒泡与捕获。

1、变量命名可使用英文字母、数字与下划线,必须以英文字母开头,区分轻重缓急写。

  事件传递定义了元素事件触发的一一。 如果你拿 <p> 元素插入到
<div> 元素中,用户点击 <p> 元素, 哪个元素的 “click”
事件先被点呢?

2、每个shell都持有自己之变量定义,彼此相互免影响。

 在 冒泡 中,内部因素的轩然大波会先行让硌,然后再次沾外部因素,即:
<p> 元素的点击事件先点,然后会触发 <div> 元素的点击事件。

3、变量直接以当号赋值,注意等号两止不足留空,若当号右侧有空格,赋值要因此引号括起来。

 在 捕获 中,外部因素的轩然大波会优先给硌,然后才见面硌内部因素的风波,即:
<div> 元素的点击事件先触发 ,然后又触发 <p> 元素的点击事件。

例如:

2、事件的拍卖:

test=1

  ①HTML事件处理:直接助长到HTML结构中

test=’hello world’

<body>
    <div id="div">
        <button id="btn" onclick="demo()">按钮</button>
    </div>
    <script>
        function demo() {
            alert("Hello html事件处理");
        }
    </script>
</body>

4、通过在变量名前加$的艺术得到变量的价。或者下${变量名}的款型,以利于变量名和紧接其后的假名或生划线进行区分。

  ②DOMO级事件处理:把一个函数赋值给一个事件处理程序属性

例如:${test}

<body>
    <div id="div">
        <button id="btn1">按钮</button>
    </div>
    <script>
        var btn1 = document.getElementById("btn1");
        btn1.onclick = function(){alert("Hello DOMO事件出现程序1")}//设置事件处理
        btn1.onclick = function(){alert("Hello DOMO事件出现程序2")}//前一个被覆盖
     btn1.onclich = null;//移除事件处理
    </script>
</body>    

5、通过${#变量}的款型得到变量值字串的长短。

  ③DOM2级事件处理:

例如:test=’12345′;echo ${#test}  
#输出5

  addEventListener(“事件称为”,”事件处理函数”,”布尔值”);

6、可以以变量声明也全局变量,全局变量作用范围涵盖有shell。命令为:export
变量名

  true:事件捕获

例如:export test

  false:事件冒泡<body>

7、使用unset注销变量,需要留意的凡吊销就局限为时shell,即使全局变量也如出一辙。unset
-v 变量名

    <div id="div">
        <button id="btn1">按钮</button>
    </div>
    <script>
        var btn1 = document.getElementById("btn1");
        btn1.addEventListener("click",demo1);//不会被覆盖,依次执行
        btn1.addEventListener("click",demo2);
        function demo1(){
            alert("Hello DOM2级事件出现程序1")
        }
        function demo2(){
            alert("Hello DOM2级事件出现程序2")
        }  
     btn1.removeEventListener("click",demo2);//移除事件2

  </script> 
</body>

例如:unset test

  removeEventListener();

8、清空变量的点子:变量名=

  ④IE事件处理程序

例如:test=

  attachEvent

9、数组变量

  datachEvent

采用变量名=(成员值1 成员值2
…)的形式赋值,成员值之间为空格分隔。

 1 <body>
 2     <div id="div">
 3         <button id="btn1">按钮</button>
 4     </div>
 5     <script>
 6         var btn1 = document.getElementById("btn1");
 7         if(btn1.addEventListener){
 8             btn1.addEventListener("click",demo);
 9         }else if(btn1.attachEvent){
10             btn1.attachEvent("onclick",demo);
11         }else{
12             btn1.onclick = demo();
13         }
14         function demo(){
15             alert("Hello DOM2级事件出现程序2")
16         }
17     </script>
18 </body>

例如:$testarray=(1 2 ‘abcd’ 38)

3、事件目标:在触发DOM事件之时段都见面来一个目标

屡组值获取使用$变量名[下标]的形式,下标从0计数。

  ①事变目标event:

例如:$testarray[2]

  • type:获取事件类
  • target:获取事件目标
  • 1

    2     <div id="div">
    3         <button id="btn1">按钮</button>
    4     </div>
    5     <script>
    6         var btn1 = document.getElementById("btn1");
    7         btn1.addEventListener("click",show);
    8         function  show(event) {
    9             alert(event.type);//获取对象类型,如click
    

    10 alert(event.target);//获取事件目标,如[object HTMLButtonElement]
    11 }
    12
    13

  • stopPropagation():阻止事件冒泡

  • preventDefault():阻止事件默认行为
  • 1
    2     <div id="div">
    3         <button id="btn1">按钮</button>
    4         <a id="aid" href="http://www.hao123.com">好123</a>
    5     </div>
    6     <script>
    7         document.getElementById("btn1").addEventListener("click",showTarget);
    8         document.getElementById("div").addEventListener("click",showDiv);
    9         document.getElementById("aid").addEventListener("click",showA);
    

    10 function showTarget(event) {
    11 alert(event.target);
    12 event.stopPropagation();//阻止事件冒泡,即点击按钮时,阻止事件传递至div(阻止触发div)
    13 }
    14 function showDiv() {
    15 alert(“div”)
    16 }
    17 function showA(event) {
    18 event.stopPropagation();//跳转,但阻挡向上传递(阻止触发div)
    19 event.preventDefault();//阻止事件默认行为,如接触击链接时跳反
    20 }
    21
    22

通过${变量名[@]}或${变量名[*]}可以取数组所有成员,区别是,前者是各个成员单独输出,后者是将兼具成员为一个字符串的花样总体出口。

二、JavaScript内置对象

通过${#变量名[@]}或${#变量名[*]}可以取得数组成员数。例如:${#testarray[@]}。

1、对象  

欲注意unset某个数组成员后,此成员的下标并无移除。

  JavaScript 中之享有东西都是目标:字符串、数值、数组、函数…

例如:

  每个对象涵盖属性和法的突出数据类型。

testarray=(1 2 3 4 5 6)

  JavaScript 允许打定义对象

unset testarray[2]

2、创建 JavaScript 对象

echo testarray[2]    #甭管价值输出

  通过 JavaScript,您能定义并创建自己的靶子。

echo testarray[3]    #输出4

  创建新目标来少种不同的不二法门:

数组可以动态增长成员,例如:testarray=($testarray[@]
7);

  • 概念并创建对象的实例
  • 采用函数来定义对象,然后创建新的靶子实例



假使数组下标也是变量,则动用{}将数组变量括起来,例如:i=1;echo
${testarray[$i]}

3、String字符串对象

10、使用readonly可以声明一个变量为才读属性。

  字符串可以储存一密密麻麻字符,如 “John Doe”。

例如:

  字符串可以是插到引号中的其余字符。你得用单引号或对引号;

readonly test 
#声明test变量为才读

  ①许符串属性

readonly -f testfunc 
#声称testfunc函数为单独读

属性

描述

constructor 返回创建字符串属性的函数
length 返回字符串的长度
prototype 允许您向对象添加属性和方法

readonly -a testarray 
#宣称testarray数组为单纯念

  ②字符串常见方法

11、bash
shell可以由此declare进行变量声明。

方法 描述
indexOf() 返回字符串中检索指定字符第一次出现的位置
lastIndexOf() 返回字符串中检索指定字符最后一次出现的位置
match() 找到一个或多个正则表达式的匹配
replace() 替换与正则表达式匹配的子串
toUpperCase() 把字符串转换为大写
toLowerCase() 把字符串转换为小写
split() 把字符串分割为子字符串数组
charAt() 返回指定索引位置的字符
charCodeAt() 返回指定索引位置字符的 Unicode 值
concat() 连接两个或多个字符串,返回连接后的字符串
fromCharCode() 将 Unicode 转换为字符串
localeCompare() 用本地特定的顺序来比较两个字符串
search() 检索与正则表达式相匹配的值
slice() 提取字符串的片断,并在新的字符串中返回被提取的部分
substr() 从起始索引号提取字符串中指定数目的字符
substring() 提取字符串中两个指定的索引号之间的字符
toString() 返回字符串对象值
trim() 移除字符串首尾空白
valueOf() 返回某个字符串对象的原始值

例如:

4、Date 对象

declare -a testarray 
#概念一个数组变量

  Date 对象用来拍卖日期以及事实上。

declare -i test   
#概念一个整型变量

  ①Date 靶属性

declare -r test   
#概念一个特读变量

属性

描述

constructor 返回对创建此对象的 Date 函数的引用。
prototype 使您有能力向对象添加属性和方法。

declare -t test   
#设定变量具有trace属性

②时时因此艺术:

declare -x test   
#概念一个环境变量

    • Date() :获得当前的时。
    • getFullYear():使用 getFullYear() 获取年份。
    • getTime():getTime() 返回从 1970 年 1 月 1 日至今天之毫秒数。
    • setFullYear():如何使用 setFullYear() 设置具体的日期。
    • toUTCString():如何运用 toUTCString() 将当日的日期(根据
      UTC)转换为字符串。
    • getDay():如何以 getDay() 和累组来展示星期,而不只是数字。
    • Display a clock:如何以网页上显得一个钟。
    • 1
      2 <html>
      3 <head>
      4     <meta charset="utf-8">
      5     <title>菜鸟教程(runoob.com)</title>
      6     <script>
      7         function startTime(){
      8              var today=new Date();
      9              var h=today.getHours();
      

      10 var m=today.getMinutes();
      11 var s=today.getSeconds();// 在低于10之数字前加一个‘0’
      12 m=checkTime(m);
      13 s=checkTime(s);
         document.getElementById(‘txt’).innerHTML=h+”:”+m+”:”+s;
      14 t=setTimeout(function(){startTime()},500);
      15 }
      16 function checkTime(i){
      17 if (i<10){ 18 i="0" + i; 19 } 20 return i; 21 } 22
      23
      24
      25

      26
      27

12、shell提供平等组命令检测变量是否在或者是否为空,根据检测结果实施相应操作,列表如下:

5、 Array(数组) 对象

${变量:-字串} 
如果变量是且发出价,返回变量值,否则回字串内容。

  数组对象是动单独的变量名叫来囤一多元的价值。

${变量:=字串} 
如果变量是都发生价,返回变量值,否则将配串赋给变量,并回到字串内容。

  ①开立数组方法:

${变量:?字串} 
如果变量是都发出价,返回变量值,否则显示将字串作为错误信息显示,并退script执行。

  •   常规方式:

${变量:+字串} 
如果变量是且有价,返回字串内容,否则回空值。

var myCars=new Array(); myCars[0]=”Saab”; myCars[1]=”Volvo”;
myCars[2]=”BMW”;

流淌:去丢命令中的:,则止检测变量是否有,不检测是否也空。

  • 简方式:var myCars=new Array(“Saab”,”Volvo”,”BMW”);
  • 字面:var myCars=[“Saab”,”Volvo”,”BMW”];

13、变量可以经${变量:起始位置:截取长度}的款式,过行取子串操作。如果打开始位置获取到字串尾,则截取长度可以省略。

  ②屡次组的特性

例如:

属性 描述
constructor 返回创建数组对象的原型函数。
length 设置或返回数组元素的个数。
prototype 允许你向数组对象添加属性或方法。

test=”123456789″

  ③时常因此艺术

echo ${test:1:3}    #输出234

方法 描述
concat() 连接两个或更多的数组,并返回结果。
sort() 对数组的元素进行排序。
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
reverse() 反转数组的元素顺序。

echo ${test:2}    #输出3456789

 

14、变量可以由此命令对该配串值进这行删除替换处理,列表如下:

//升序排列
var points = [40,100,1,5,25,10];
points.sort(function(a,b){return a-b});
//降序排列
var points = [40,100,1,5,25,10];
points.sort(function(a,b){return b-a});

${变量#匹配式}  
根据匹配式从漏洞百出最缺乏匹配子串并去。

6、Math对象

${变量##匹配式}  
根据匹配式从左贪婪匹配子串并剔除。

  Math 对象用来实践数学任务。

${变量%匹配式}  
根据匹配式从右侧最短缺匹配子串并去。

     使用Math的属性/方法的语法:

${变量%%匹配式}  
根据匹配式从右侧贪婪匹配子串并去。

var x=Math.PI;

${变量/匹配式/替换串}  
根据匹配式从左匹配第一身长串替换成替换串。

var y=Math.sqrt(16); 

${变量//匹配式/替换串}  
根据匹配式匹配有子串替换成替换串。

  round():如何行使 round()。

${变量/#匹配式/替换串}  
根据匹配式从左匹配第一个头串替换成替换串。

  random():使用 random() 来回到 0 到 1
间的随机数。使用parstInt(Math.random()*10)产生0-10中的随机整数。

${变量/匹配式/}  
根据匹配式从左匹配第一身长串并删除。

  max(): max() 来回到两单给定的勤吃之于生之勤。

${变量//匹配式/}  
根据匹配式从右侧匹配有子串并删除。

  min():使用 min() 来回到两独给定的多次惨遭的可比小之屡屡。

${变量/#匹配式/}  
根据匹配式从左匹配第一身材串并去。

 三、JavaScript DOM对象说了算HTML元素详解

${变量/%匹配式/}  
根据匹配式从右侧匹配有子串并去。

  在 HTML DOM 中,所有东西都是节点。DOM 是吃视为节点树的 HTML。

15、利用eval实现动态变量功能,动态变量的变量名由另外一个变量的值构成。

 1、常用方法:

示例:

方法 描述
getElementById() 返回带有指定 ID 的元素。
getElementsByTagName() 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。
getElementsByName() 返回包含带有指定name名称的所有元素的节点列表(集合/节点数组)。
getElementsByClassName() 返回包含带有指定类名的所有元素的节点列表。
appendChild() 把新的子节点添加到指定节点。
childNodes() 访问子节点
parentNode() 访问父节点
removeChild() 删除子节点。
replaceChild() 替换子节点。
insertBefore() 在指定的子节点前面插入新的子节点。
createAttribute() 创建属性节点。
createElement() 创建元素节点。
createTextNode() 创建文本节点。
getAttribute() 返回指定的属性值。
setAttribute() 把指定属性设置或修改为指定的值。
offsetHeight 返回,任何一个元素的高度包括边框和填充,但不是边距
scrollHeight 返回整个元素的高度(包括带滚动条的隐蔽的地方)

#设n1更换量之值也外一个变量的称号

示例:

n1=”n2″

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <p name="pn">Hello</p>
 9     <p name="pn">Hello</p>
10     <p name="pn">Hello</p>
11     <p name="pn">Hello</p>
12     <a id="aid" title="得到了a标签的属性"></a>
13     <a id="aid2"></a>
14     <ul><li>1</li><li>2</li><li>3</li></ul>
15     <div id="div">
16         <p id="pid">div的p元素</p>
17     </div>
18     <script>
19         //获取元素
20         function getName() {
21             var count = document.getElementsByName("pn");//以name方式获取获取该类集合
22             //var count = document.getElementsByTagName("p");//以元素名获取集合
23             alert(count.length);
24             var p = count[2];
25             p.innerHTML = "World";
26         }
27         //获取节点属性
28         function getAttr() {
29             var anode = document.getElementById("aid");
30             var attr = anode.getAttribute("title");
31             alert(attr);
32         }
33         //设置节点属性
34         function setAttr() {
35             var anode = document.getElementById("aid2");
36             anode.setAttribute("title","动态标签title属性");
37             var attr = anode.getAttribute("title");
38             alert(attr);
39         }
40         //获取子节点
41         function getChildNode() {
42             var childnode = document.getElementsByTagName("ul")[0].childNodes;
43             alert(childnode.length);
44             alert(childnode[0].nodeType);
45         }
46         //获取父节点
47         function getParentNode() {
48             var div = document.getElementById("pid");
49             alert(div.parentNode.nodeName);
50         }
51         //创建节点
52         function createNode() {
53             var body = document.body;
54             var input = document.createElement("input");
55             input.type="button";
56             input.value="按钮";
57             body.appendChild(input);//添加节点到body末尾
58         }
59         //指定位置添加节点
60         function addNode() {
61             var div = document.getElementById("div");
62             var node = document.getElementById("pid");
63             var newnode = document.createElement("p");
64             newnode.innerHTML = "动态添加一个p元素";
65             div.insertBefore(newnode,node);
66         }
67         //删除节点
68         function removeNode() {
69             var div = document.getElementById("div");
70             var p = div.removeChild(div.childNodes[1]);
71         }
72         //获取页面尺寸
73         function getSize() {
74             var width = document.body.offsetWidth || document.documentElement.offsetWidth;
75             //前半句兼容性较好
76             var height = document.documentElement.offsetHeight;
77             alert(width+","+height);
78         }
79         getSize();
80     </script>
81 </body>
82 </html>

#为动态变量n2赋值

季、JavaScript浏览器对象

eval ${n1}=abc

1、window对象

echo “$n1=$n2”    #输出n2=abc

  ①window对象

#为动态方式将动态变量n2的值赋给变量t

    • 抱有浏览器还支持 window 对象。它意味着浏览器窗口。
    • 有 JavaScript 全局对象、函数和变量均自动变成 window
      对象的积极分子。
    • 全局变量是 window 对象的属性。
    • 大局函数是 window 对象的主意。
    • 还是 HTML DOM 的 document 也是 window 对象的性质之一

eval t=\$${n1}

  ②Window 尺寸

echo “t=$t”   #输出t=abc

  有三种方式能确定浏览器窗口的尺码。

 

  对于Internet Explorer、Chrome、Firefox、Opera 以及 Safari:

图片 2仲、
常用系统变量

    • window.innerHeight – 浏览器窗口的中间高度(包括滚动条)
    • window.innerWidth – 浏览器窗口的内部宽度(包括滚动条)

  对于 Internet Explorer 8、7、6、5:

1、$0

    • document.documentElement.clientHeight
    • document.documentElement.clientWidth

眼前实践的shell
script文件称(带完整路径)

  或者

2、$1 ~ $n

    • document.body.clientHeight
    • document.body.clientWidth

依次存放shell
script的下令执行参数,数值高于9时要使用{}括起来,比如${10}。

  ③其他 Window 方法  

命令执行参数可以通过shift命令进行运动操作,位置参数根据shift命令指定的数值为前头挪,如未指定移动值,则运动1赖。例如:

    • window.open() – 打开新窗口
    • window.close() – 关闭时窗口
    • window.moveTo() – 移动时窗口
    • window.resizeTo() – 调整时窗口的尺码

#!/bin/bash

 示例:

echo “所有入参:$@”

 1 <body>
 2     <button id="btn" onclick="btnClicked()">按钮</button>
 3     <script>
 4         //打印窗口的高度和宽度
 5         // document.write("宽度:"+window.innerWidth+",高度:"+window.innerHeight);
 6         function btnClicked() {
 7             //打开一个新的窗口(第二、三个参数为可选项),并可设置窗口属性,第三个参数可根据需要设置新窗口的一些属性
 8             //window.open("obindex.html","windowname","height = 200,width=200,top=100,left=100");
 9             //关闭窗口
10             window.close();
11         }
12     </script>
13 </body>

while shift

2、JavaScript 计时事件

do

  ①计时事件

  [ -n “$1” ] && echo $1

  通过下
JavaScript,我们出力量作到于一个设定的日子距离之后来实行代码,而不是以函数被调用后立即执行。我们称为计时事件。

done

  ②算时方法

3、$*

    • setInterval() – 间隔指定的毫秒数不停止地实行指定的代码。 

拿具备命令执行参数做为一个字符串存入此变量。

window.setInterval(“javascript
function”,milliseconds); 

4、$@

             clearInterval() 方法用于停止 setInterval()
方法执行的函数代码。

将兼具命令执行参数做为一个字符串数组,每个参数为一个分子变量,存入此变量。

 window.clearInterval(intervalVariable) 

5、$#

 1 <body>
 2     <button id="btn" onclick="stopTime()">按钮</button>
 3     <p id="ptime"></p>
 4     <script>
 5         var mytime = setInterval(function () {
 6             getTime();
 7         },1000);
 8         function getTime() {
 9             var d = new Date();
10             var t = d.toLocaleTimeString();
11             document.getElementById("ptime").innerHTML=t;
12         }
13         function stopTime() {
14             //停止执行
15             clearInterval(mytime);
16         }
17     </script>
18 </body>

指令执行参数的个数。

    • setTimeout() – 暂停指定的毫秒数后执行指定的代码 

6、$?

       window.setTimeout(“javascript
函数”,毫秒数); 

达到平等长命令执行后底返回码。

     clearTimeout() 方法用于停止实施setTimeout()方法的函数代码。

7、$$

* window.clearTimeout(timeoutVariable) *

手上执行之shell script进程编号。

 1 <body onload="myWin()">
 2     <button id="btn" onclick="stopWin()">按钮</button>
 3     <script>
 4         var win;
 5         function myWin(){
 6             alert("hello")
 7             //延迟3秒弹出,自调自,形成死循环
 8             win = setTimeout(function(){myWin()},3000);
 9         }
10         //停止执行
11         function stopWin() {
12             clearTimeout(win);
13         }
14     </script>
15 </body>

8、$!

Note: setInterval() 和 setTimeout() 是 HTML DOM
Window对象的星星独办法,调用时可直接写该措施,省略window

达成一个后台程序的长河编号。

3、History对象

9、$_

①History对象

script执行时,存放bash的绝对路径。

window.history 对象涵盖浏览器的史(url)的聚合。

bash交互时,存放上一个令最后一个发令执行参数。

②History方法:

邮件检测时,存放邮件文件称。

  • history.back() – 与于浏览器点击后回落按钮相同,加载历史列表中之前方一个
    URL。
  • 1

    2 <head>
    3     <script>
    4         function goBack(){
    5               window.history.back()
    6           }
    7     </script>
    8 </head>
    9 <body>
    

    10
    11
    12

  • history.forward() – 与在浏览器被点击按钮上同

  • history.go() – 进入历史被的某个页面
  • 拟过反到登录界面再返原界面

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8     <a href="obindex.html">跳转</a>
     9 </body>
    10 </html>
    
     //obindex.html
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6     <script>
     7         function safe() {
     8             var name = document.getElementById("username").value;
     9             if (name=="hello"){
    10 //              跳转到前一个页面
    11                 history.go(-1);
    12             }else{
    13                 alert("输入错误");
    14             }
    15         }
    16     </script>
    17 </head>
    18 <body>
    19 <form>
    20     <input type="text" id="username">
    21     <button id="btn" onclick="safe()">按钮</button>
    22 </form>
    23 </body>
    24 </html>
    

 

4、JavaScript Window Location

图片 3其三、常用内置命令

  window.location 对象用于取当前页面的地方
(URL),并把浏览器重定向到新的页面。


  Location对象的性:

1、echo

    • location.hostname 返回 web 主机的域名
    • location.pathname 返回时页面的路和文件称
    • location.port 返回 web 主机的端口 (80 或 443)
    • location.protocol 返回所使用的 web 协议(http:// 或 https://)
    • location.href 属性返回时页面的 URL。
    • location.assign() 方法加载新的文档。

显示信息,自动换行

  window.location.assign(“http://www.w3cschool.cc”) 

echo -n

5、JavaScript Window Screen

取消活动换行

* window.screen 对象涵盖关于用户屏幕的音信。*

echo -e

  一些性:

配串中决定符生效,比如\n

  • screen.availWidth – 可用的屏幕宽度
  • screen.availHeight – 可用之屏幕高度

  • screen.width-屏幕宽度
  • screen.height -屏幕高度

echo显示的信息要带有空格则使单引号或双引号括起来。

五、面向对象

故此对勾号括起来的内容,会对其中的变量取值、运算式计算结果、获取命令执行结果、转义符进行转义后更出口。

  • 整整事物都对象
  • 靶具备封装和累特性
  • 目标及对象之间下信息通信,各自存在信息隐藏

单引号对括起来内容不举行其他移直接出口。

1、对象的创立

例如:echo “it’s me” #输出 it’s
me

①创造一个尚无外性质的目标:

test=lykyl;echo ‘$test’ #输出
$test

 var obj = {}; 

倘显示信息包括变量则赢得变量值后再和字串组合后显得。

②创建一个靶并安装属性和初始值:

例如:test=lykyl;echo “hello $test” 
#输出 hello lykyl

 var person =
{name:”Angel”,age:18,married:false}; 

如真如出口$字符,可以透过转义符或用许串用单引号括起来。

③创立一个对象并安装属性与艺术:

例如:test=lykyl;echo -n ‘hello
$test’;echo “\$test”  #输出 hello $test $test

 var speaker = {text:”Hello
World”,say:function(){aler(this.text)}}; 

2、:

④创办一个错综复杂的靶子,嵌套其他对象及目标数组等:

回传0

var company =
{
    name: "Microsoft",
    product: "softwares",
    chairman: {name: "Bill Gates", age: 53, Married: true},
    employees: [{name: "Angel", age: 26, Married: false}, {name: "Hanson", age: 32, Marred: true}],
    readme: function() {document.write(this.name + " product " + this.product);}
};

3、eval

2、对象的另外一栽创建方法(函数构造器)

分析字串参数,以命形式实行

  使用new操作符结合一个函数的款式来创建对象。

4、source

function MyFunc() {};         //定义一个空函数
var anObj = new MyFunc();  //使用new操作符,借助MyFun函数,就创建了一个对象

每当现阶段shell中实践指定shell程序。

  上述创建方法齐价于:

例如:source func.sh

function MyFunc(){};
var anObj = {};     //创建一个对象
MyFunc.call(anObj); //将anObj对象作为this指针调用MyFunc函数

6、read

  继承的体现:

read 变量名

 1 function Person(name) {  //带参数的构造函数
 2      this.name = name;   //将参数值赋给给this对象的属性
 3      this.SayHello = function() {alert("Hello, I'm " + this.name);};   //给this对象定义一个SayHello方法。
 4 };
 5 
 6 function Employee(name, salary){     //子构造函数
 7      Person.call(this, name);        //将this传给父构造函数
 8      this.salary = salary;       //设置一个this的salary属性
 9      this.ShowMeTheMoney = function() {alert(this.name + " $" + this.salary);};  //添加ShowMeTheMoney方法。
10 };
11      
12 var BillGates = new Person("Bill Gates");   //用Person构造函数创建BillGates对象
13 var SteveJobs = new Employee("Steve Jobs", 1234);   //用Empolyee构造函数创建SteveJobs对象
14 
15 BillGates.SayHello();   //显示:I'm Bill Gates
16 SteveJobs.SayHello();   //显示:I'm Steve Jobs
17 SteveJobs.ShowMeTheMoney();   //显示:Steve Jobs $1234
18 
19 alert(BillGates.constructor == Person);  //显示:true
20 alert(SteveJobs.constructor == Employee);  //显示:true
21     
22 alert(BillGates.SayHello == SteveJobs.SayHello); //显示:false

取用户输入,并将输入内容存入命令后的变量中。如果非指定变量,则默认存入REPLY这个变量中。

  这段代码表明,函数不但可当做构造函数,而且还得带动参数,还得吧目标上加成员与章程。其中的第9实施,Employee构造函数又拿团结收的
this作为参数调用Person构造函数,这即是一对一给调用基类的构造函数。第21、22执还表明这样一个意思:BillGates是由Person构造的,而SteveJobs是出于Employee构造的。对象放置的constructor属性还指明了结构对象所用之现实函数!

read -p ‘提示信息’ 变量名

3、原型

展示提示信息后,等待用户输入。

  ①
JavaScript的具有function类型的对象都发生一个prototype属性。这个prototype属性本身又是一个object类型的针对
象,因此我们吧可被此prototype对象上加任意的性质和法。既然prototype是目标的“原型”,那么由该函数构造出来的靶子应该都见面具
有之“原型”的表征。事实上,在构造函数的prototype上定义之兼具属性与方式,都是好透过其结构之目标直接看同调用的。也足以如此
说,prototype提供了一如既往浩大同类对象同享属性和方的编制。(类似于Java
中的接续)

read -a 变量名

function Person(name){
    this.name = name;   //设置对象属性,每个对象各自一份属性数据
};

Person.prototype.SayHello = function(){  //给Person函数的prototype添加SayHello方法。
     alert("Hello, I'm " + this.name);
}

var BillGates = new Person("Bill Gates");   //创建BillGates对象
var SteveJobs = new Person("Steve Jobs");   //创建SteveJobs对象

BillGates.SayHello();   //通过BillGates对象直接调用到SayHello方法
SteveJobs.SayHello();   //通过SteveJobs对象直接调用到SayHello方法

alert(BillGates.SayHello == SteveJobs.SayHello); //因为两个对象是共享prototype的SayHello,所以显示:true

纳以空格分隔的一致组值,存入指定的变量中。

     
程序运行的结果表明,构造函数的prototype上定义的不二法门确实好透过对象直接调用到,而且代码是共享的。

read -r 变量名

  ②据此就大概的遮盖机制实现了靶的“多态”性(类似于Java被之overrid):

read命令默认去丢转义字符前面的倒斜杠,例如,输入\n存入变量后只有n。增加-r选项后,read命令将经受转义字符,不举行过滤。

function Person(name){
    this.name = name;
};

Person.prototype.company = "Microsoft"; //原型的属性

Person.prototype.SayHello = function(){  //原型的方法
    alert("Hello, I'm " + this.name + " of " + this.company);
};

var BillGates = new Person("Bill Gates");
BillGates.SayHello();   //由于继承了原型的东西,规规矩矩输出:Hello, I'm Bill Gates

var SteveJobs = new Person("Steve Jobs");
SteveJobs.company = "Apple";    //设置自己的company属性,掩盖了原型的company属性
SteveJobs.SayHello = function(){ //实现了自己的SayHello方法,掩盖了原型的SayHello方法
        alert("Hi, " + this.name + " like " + this.company + ", ha ha ha ");
};

SteveJobs.SayHello();   //都是自己覆盖的属性和方法,输出:Hi, Steve Jobs like Apple, ha ha ha 

BillGates.SayHello();   //SteveJobs的覆盖没有影响原型对象,BillGates还是按老样子输出

read -t 等待时长 变量名

  ③动态扩展性

设置read等待输入的时长,超时后read将回一个非零值。

function Person(name){
    this.name = name;
};

Person.prototype.SayHello = function(){  //建立对象前定义的方法
    alert("Hello, I'm " + this.name);
};

var BillGates = new Person("Bill Gates");   //建立对象

BillGates.SayHello();

Person.prototype.Retire = function(){    //建立对象后再动态扩展原型的方法
    alert("Poor " + this.name + ", bye bye!");
};

BillGates.Retire(); //动态扩展的方法即可被先前建立的对象立即调用

read -s 变量名

  ④信之藏匿(类似于Java被的包)

潜伏用户输入内容以屏幕上的回显。

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4    <meta charset="utf-8">
 5   <title>菜鸟教程(runoob.com)</title>
 6 </head>
 7 <body>
 8
 9   <p>局部变量计数。</p>
10   <button type="button" onclick="myFunction()">计数!</button>
11   <p id="demo">0</p>
12   <script>
13      var add = (function () {
14         var counter = 0;
15         return function () {return counter += 1;}
16     })();
17     function myFunction(){
18         document.getElementById("demo").innerHTML = add();
19     }
20 </script>
21 </body>
22 </html>

7、exec

  ⑤原型模型大致写法

exec 命令

 //定义构造函数
 function Person(name){
    this.name = name;   //在构造函数中定义成员
 };

 //方法定义到构造函数的prototype上
 Person.prototype.SayHello = function(){
    alert("Hello, I'm " + this.name);
 };    

 //子类构造函数
 function Employee(name, salary){
    Person.call(this, name);    //调用上层构造函数
    this.salary = salary;       //扩展的成员
 };

 //子类构造函数首先需要用上层构造函数来建立prototype对象,实现继承的概念
 Employee.prototype = new Person()   //只需要其prototype的方法,此对象的成员没有任何意义!

 //子类方法也定义到构造函数之上
 Employee.prototype.ShowMeTheMoney = function(){
        alert(this.name + " $" + this.salary);
 };

 var BillGates = new Person("Bill Gates");
 BillGates.SayHello();    

 var SteveJobs = new Employee("Steve Jobs", 1234);
 SteveJobs.SayHello();
 SteveJobs.ShowMeTheMoney();

执行命令,取代目前shell。

exec < 文件名

转发输入,将由此专业输入读取数据的主意成为从指定文件获取。

8、eval

执行命令后面参数组合成的下令。

例如:

showfile=’/etc/passwd’

eval “cat $showfile”

9、expr

返回算术运算式的值,需要小心运算式元素中应以空格分隔,遇到跟系统控制符冲突的操作符要加转义。

例如:

expr 1 + 1

expr 2 \* 3

 

**图片 4四、函数**


1、基本格式

function 函数名()

{

  命令

  … …

}

2、基本用法

最主要词function和函数名后的括号可以独立省略,但不足同时概括。

默认为最终执行命令的返值代表函数的返回码。可以采用return命令就终止函数执行,并坐return后指定的价做也返回码。如果return未因定值,则归回0。

函数需要以首次调整用前定义,建议以先后太前头定义。

得将函数统一定义在单独文件被,再因为source或.
(注意.后面来空格)的款式让另外程序调用。为了不起冲突,建议函数包着定义之函数称作以下划线开头。

函数内局部变量应为local关键词定义。

函数直接盖函数誉为调用,如需要传入参数则在函数名加空格后跟写,多只参数为空格分隔。

函数使用以及$n的款式调用传入的职务参数,此时主程序的职位参数不叫影响。

函数定义后支持动态调用。

例如:

func.sh

#!/bin/bash

_testfunc()

{

  if (( $1 > $2 ));then

    echo “$1 > $2”

  elif (( $1 == $2 ));then

      echo “$1 = $2”

    else

      echo “$1 < $2”

  fi

  return 10

}

 

main.sh

#!/bin/bash

. func.sh

_testfunc 32 24

_testfunc 15 15

_testfunc 1 12

#动态调用示例

s=”_testfunc”

`$s 12 12`

 

图片 5五、流程控制命令


1、if 条件转向命令

1.1 基本格式:

if 命令A

then

  命令

  …

else

  命令

  …

fi

1.2 嵌套格式:

if 命令A

then

  命令

  …

elif 命令B

then

  命令

  …

elif 命令C

then

  命令

  …

fi

要是if后面和的下令执行回来回码为0则实施then后面的命令,否则执行else后面的指令。

if和then可以放一行,前提是if后同的授命加分号最后。

例如:

if test -r /etc/passwd; then cat
/etc/passwd; fi

2、case条件选择命令

核心格式:

case 变量 in

 匹配串1)

   命令

   …

   ;;

 匹配串2)

   命令

   …

   ;;

  … …

  … …

 匹配串n)

   命令

   …

   ;;

 *)

   命令

   …

   ;;

esac

匹配串的格式:

单独字符串  完全匹配。


任意长度的任意字串,包括空串。例如:j*k,匹配jack、jak。


单个字符。例如:j??k,匹配jack,但未兼容配jak。

[]
字符集.例如:[a-c]OK,匹配aOK、bOK、cOK。


匹配多只门当户对配串。例如:j??k|[a-c]OK|jak。

若果打开extglob选项,则会支撑高级匹配。shopt -s
extglob

?(匹配串)
匹配0单或1只括号里之匹配串。

*(匹配串)
匹配0独以上括号里的匹配串。

+(匹配串) 匹配1个括号里的匹配串。

@(匹配串)
匹配括号里的相当串其中的如出一辙件。

!(匹配串) 匹配非括号里之匹配串。

3、for循环命令

3.1 基本格式1:

for 变量 in IFS分隔符定义的字串

do

  命令

  …

done

3.2 处理中心字串:

for i in 1 2 3 4 5 6 7 8 9

do

  echo $i

done

3.3 从文本取串处理:

for i in $(cat /etc/passwd)

do

  IFS_old=IFS

  IFS=’:’

  for j in $i

  do

    echo “$j “

  done

  echo
“—————————“

  IFS=IFS_old

done

3.4 以属配符遍历目录:

for i in /etc/*

do

  if [ -f “$i” ]; then

    echo “$i 是文件”

  fi

done

 

3.5 基本格式2:

for
((初始化;结束条件判断;参数变更))

do

  命令

  …

done

此格式类似C语言,具体定义不再阐述。仅举无异于条例

for
((i=1,j=1;(i+j)<=100;i=i+1;j=j+1))

do

  echo “$i,$j”

done

4、while循环命令

4.1 基本格式:

while 条件判断

do

  命令

  …

done

当规则符合条件判断式时实施循环体。

4.2 基本使用:

i=0

while (($i<10))

do

  echo $i

  i=$(($i+1))

done

4.3 从文本读取内容:

while read line

do

  echo $line

done < “/etc/passwd”

4.4 无限循环:

while :

  do

    sleep 5

  done

5、until循环命令

主导格式:

until 条件判断

do

  命令

  …

done

当极不符合条件判断式时实施循环体。

6、select菜单选择命令

骨干格式:

select 变量 in
IFS定义之相间符分隔的配串行

do

  命令

  … …

done

 

拿许串以IFS定义的相间符为界分解成多码,编号后列表显示输出,并将环境变量PS3概念之情节作精选提示称显示。根据用户挑选进行相应的操作。

例如:

PS3=”请你选择:”

select sel in “测试 1” “测试选择2”
“测试选择 3” “退出选择”

do

  case $sel in

    “测试 1”)

      echo “测试 1”;;

    “测试选择2”)

      echo “测试 2”;;

    “测试选择 3”)

      echo “测试 3”;;

    *)

      break

      ;;

  esac

done

7、break命令,中止并跳出当前循环体。

8、continue命令,直接了此轮循环,继续下轮循环。

9、条件判断命令

标准化判断命令是暨流程控制语句配合以的一声令下。

命令格式: test 条件判断式

回条件判断式的价,条件建立返回0,否则回非0值。

平常以[ 条件判断式
]的格式代替test命令,注意尺度判断式与[]非得有空格分开。

与判断的变量必须就初始化且非空。

例如:[ -e ~/.bashrc ]

9.1 条件判断支持复合条件判断:

A、与判断

动用&&分隔两修判断命令。

例如:[ -e ~/.bashrc ] && [ ~/.bashrc
-nt /etc/passwd ]

B、或判断

用||分隔两条判断命令。

例如:[ -e ~/.bashrc ] || [ ~/.bashrc
-nt /etc/passwd ]

C、非判断

使用!符号进行非判断。

例如: ![ -e ~/.bashrc ]

9.2
条件判断式包括数值判断、字串判断、文件判断及复合判断四类操作,分别定义如下:

A、数值判断

[ n1 -eq n2 ]   #判断n1==n2

[ n1 -ge n2 ]   #判断n1>=n2

[ n1 -gt n2 ]   #判断n1>n2

[ n1 -le n2 ]   #判断n1<=n2

[ n1 -lt n2 ]   #判断n1<n2

[ n1 -ne n2 ]   #判断n1!=n2

留意:数值判断单独支持整型。

B、字串判断

[ str1 = str2 ]   

[ str1 != str2 ]   

[ str1 < str2 ]   

[ str1 > str2 ]   

[ -n str1 ]   #认清str1尺寸是否非0 
 

[ -z str1 ]  
#看清str1长短是否也0  

流动:如果字串有空格,应以那用引号括起来。

C、文件判断

[ -d file ]  
#看清目录file是否留存

[ -e file ]   #判断file是否存在

[ -f file ]  
#判断文件file是否在

[ -r file ]  
#判定file是否有并而读

[ -s file ]  
#看清file是否是并非空

[ -w file ]  
#判断file是否留存并可写

[ -x file ]  
#判定file是否存在并不过实行

[ -O file ]  
#认清file是否有并属于即用户

[ -G file ]  
#判断file是否是且默认组于当下用户所属组是否同样

[ file1 -nt file2 ]  
#判断file1是否比file2新

[ file1 -ot file2 ]  
#判断file1是否比file2旧

D、复合判断

-a  与操作,例如:[ -e file -a -r file
]

-o  或操作,例如:[ -e file -o -r file
]

格判断好经过(())使用规范数学运算符进行数值赋值运算和判。

例如:

test=3

if (( $test * 3 > 1 ));then

  echo $test

else

  echo $(( ++test ))

fi

基准判断好透过[[]]取代test进行字串比较,同时还提供了刚刚则匹配功能。注意判断式和[[、]]暨运算符之间一旦为此空格分隔。

例如:

test=”aaabbb123″

if [[ $test == ‘a*’ ]];then

  echo ok

fi

 

Thanks and Regards

参考: lykyl –
http://www.cnblogs.com/lykyl/archive/2013/02/15/2912764.html

图片 6

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图