做前端几年了,一直疏于整理归纳,所以这两天把基础看了一遍,加上使用经验,整理了基础知识中关键技术,旨在系统性的学习和备忘。如果发现错误,请留言提示,谢谢!

重要说明:本文只列举基础知识点,中级和高级内容请参考其他两篇。

JavaScript进阶内容1:各种对象类型判断

会当凌绝顶:JavaScript高级内容

  1. 1. JScript null undefined 的主要区别是 null 的操作象数字 0,而 undefined 的操作象特殊值NaN (不是一个数字)。对 null 值和 undefined 值作比较总是相等的。nullundefined拼接string字符时相当于'null''undefined'字符串拼接。
  2. 如:
  3. null+2=2;
  4. null*4=0;
  5. undefined+2=NaN;
  6. null==undefined //返回true。
  7. null+'qqqq'=nullqqqq;
  8. undefined+'www'=undefinedwww
  9. 说明:null只有参与运算时可以当做0,但是null==0,返回false
  10.  
  11. 2.JScript 变量使用 var 声明,运算时自动转换类型,规则如下:
  12. + 字符串 //将数值强制转换为字符串。
  13. 布尔值 + 字符串 //将布尔值强制转换为字符串。
  14. + 布尔值 //将布尔值强制转换为数值。
  15. 如:
  16. 200+'Hello'='200Hello'
  17. true+'Hello'='trueHello'
  18. true+5=6 //true转化为1
  19. false*5=0 //false转化为0
  20.  
  21. 3.Jscript 有三种主要数据类型、两种复合数据类型和两种特殊数据类型。
  22. 主要(基本)数据类型是:
  23. 字符串 //string
  24. 数值 //number 在Jscript中整数和浮点值没有差别(JScript 内部将所有的数值表示为浮点值)。
  25. 布尔 //boolean
  26. 复合(引用)数据类型是:
  27. 对象
  28. 数组
  29. 特殊数据类型是:
  30. Null //typeof null=object,而非类型 null,这点潜在的混淆是为了向下兼容(nul表示“无值”或“无对象”)
  31. Undefined // typeof Undefined=Undefined,对象属性不存在, 或者声明了变量但从未赋值。
  32. 说明:typeof 返回值有六种可能: "number," "string," "boolean," "object," "function," "undefined."
  33.  
  34. 4.任何值为0null、未定义(undefined)或空字符串(''"")的表达式被解释为 false。其他任意值的表达式解释为 true
  35. 如:
  36. if(x=y+z) //先把y+z赋值给x,然后判断x得知是否为0
  37.  
  38. 5.判断一个变量是否为undefined 的方式:
  39. if (typeof(x) == "undefined")
  40. 以下两种是错误的:
  41. if (x == undefined)
  42. if (typeof(x) == undefined)
  43.  
  44. 6.运算符
  45. instanceof 运算符:
  46. 返回一个 Boolean 值,指出对象是否是特定类的一个实例。
  47. result = object instanceof class
  48. in 运算符:
  49. 测试对象中是否存在该属性。
  50. result = property in object
  51. ==,!=:
  52. NaN 与包括其本身在内的任何值都不相等,即NaN!=NaN,如果判断是否为NaN,请使用Number.isNaN()方法。
  53. null null undefined 相等。 null==undefined
  54. 注意:
  55. 基本的字符串、数值和布尔值是按值比较的。如果它们的值相同,比较结果为相等。
  56. 对象(包括ArrayFunctionStringNumberBooleanErrorDate以及 RegExp 对象)按引用比较。即使这些类型的两个变量具有相同的值,只有在它们正好为同一对象时比较结果才为 true
  57. 如:
  58. var string1="Hello";
  59. // 具有相同值的两个 String 对象。
  60. var StringObject1 = new String(string1);
  61. var StringObject2 = new String(string1);
  62. StringObject1 == StringObject2 //返回false。
  63. StringObject1.ValueOf() == StringObject2 //返回True (ValueOf()返回指定对象的原始值)
  64.  
  65. ===、!== 恒等(严格相等)运算符:
  66. 数值和类型都要相同
  67.  
  68. 7.语句控制
  69. 第一种是选择结构。
  70. 单一选择结构(if),
  71. 二路选择结构(if/else),
  72. 内联三元运算符 ?:
  73. 多路选择结构(switch)。 //使用break跳出
  74.  
  75. 第二种类型的程序控制结构是循环结构。
  76. 在循环的开头测试表达式(while),
  77. 在循环的末尾测试表达式(do/while),
  78. 对对象的每个属性都进行操作(for/in),
  79. 由计数器控制的循环(for)。
  80. 如:
  81. for...in 循环
  82. 1)遍历对象属性:
  83. var myObject = new Object();
  84. myObject.name = "James";
  85. myObject.age = "22";
  86. myObject.phone = "555 1234";// 枚举(循环)对象的所有属性
  87. for (prop in myObject) {
  88. //遍历myObject所有属性(注意一定要用prop遍历)
  89. }
  90.  
  91. 2)遍历键值对象:
  92. function ForInDemo(){
  93. // 创建某些变量。
  94. var a, key, s = ""; // 初始化对象。
  95. a = {"a" : "Athens" , "b" : "Belgrade", "c" : "Cairo"} // 迭代属性。
  96. for (key in a) {
  97. s += a[key] + ";";
  98. }
  99. return(s);
  100. }
  101. 说明:js其他循环还有:forwhiledo..while,使用break continue 跳出和继续下一个 循环
  102.  
  103. 8.expando属性:对象可扩展属性
  104. expando不是一个关键字,而是expandable object 的缩写,即可扩展对象,js中所有对象都是扩展的,有下面两种情况:
  105. 第一:如果属性的名称符合js变量命名规范,可以直接用'.':
  106. var myObj = new Object();// 添加两个 expando 属性,'name' 和 'age'
  107. myObj.name = "Fred";
  108. myObj.age = 42;
  109. 第二:如果属性名称不是一个简单的标识符,或者在写脚本的时候不知道,可以在【方括号】中使用任意表达式来索引属性。在 Jscript 中所有 expando 属性的名称在被添加到对象之前被转换为字符串
  110. var myObj = new Object();
  111. myObj["not a valid identifier"] = "This is the property value";
  112. myObj[100] = "100";
  113. 说明:数组也是对象,只不过它有一个其他对象不具有的length属性。数组可以通过expando属性实现多维数组(虽然js中数组不支持多维),如下:
  114. var myArray = new Array(3);
  115. myArray[0] = new Array(3);
  116. myArray[1] = new Array(3);
  117. myArray[2] = new Array(3);
  118. myArray[0][0]='00'
  119. myArray[0][1]='01'
  120. myArray[2][2]='22'
  121. 另外,数组增加expando属性,length属性不会改变,如:
  122. var myArray = new Array(3);
  123. myArray[0] = "Hello";
  124. myArray[1] = 42;
  125. myArray[2] = new Date(2000, 1, 1);
  126. //myArray.length=3
  127.  
  128. // 添加某些 expando 属性
  129. myArray.expando = "JScript!";
  130. myArray["another Expando"] = "Windows";
  131. //myArray.length依然为3
  132.  
  133. 9.prototype 属性
  134. 返回某个对象原型的引用,该属性可以为对象原型添加功能,添加成功后,改对象的所有实例都拥有该属性,包括那些已经生成的实例。
  135. 如:
  136. //person 含有两个参数的构造器
  137. function person(name, sex){
  138. this.name = name;
  139. this.name = sex;
  140. }
  141. var nick=new person('nick','boy')
  142. var iwen=new person('iwen','gril')
  143. iwen.hairstyle='长头发';//只有iwen才有 hairstyle 属性
  144. person.prototype.height='170';//nick 和 iwen 实例对象都会增加 height 属性
  145. 说明:prototype属性可以用于js继承的实现。
  146.  
  147. 10.内部对象
  148. Jscript 提供了 11 个内部(或“内置”)对象。它们是ArrayBooleanDateFunctionGlobalMathNumberObjectRegExpErrorString 对象。
  149. Array 对象
  150. var theMonths = new Array(12);
  151. theMonths[0] = "Jan";
  152. theMonths[1] = "Feb";
  153. theMonths[2] = "Mar";
  154. theMonths[3] = "Apr";
  155. theMonths[4] = "May";
  156. theMonths[5] = "Jun";
  157. theMonths[6] = "Jul";
  158. theMonths[7] = "Aug";
  159. theMonths[8] = "Sep";
  160. theMonths[9] = "Oct";
  161. theMonths[10] = "Nov";
  162. theMonths[11] = "Dec";
  163. 等价于
  164. var theMonths = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
  165. 说明:
  166. 如果theMonths.length=2,则theMonths数组的后10个将被自动删掉,只保留前2个值。
  167.  
  168. 11.变量范围
  169. 一个局部变量的名称可以与某个全局变量的名称相同,但这是完全不同和独立的两个变量。因此,更改一个变量的值不会影响另一个变量的值。在声明局部变量的函数内,只有该局部变量有意义。
  170. 如:
  171. var alec="全局变量";
  172. function changeAlec(){
  173. var alec="局部变量";
  174. alec+=",哈哈";
  175. alert("函数内:"+alec)//局部变量,哈哈
  176. }
  177. changeAlec();
  178. alec+=",吼吼";
  179. alert("函数外:"+alec);//全局变量,吼吼
  180.  
  181. 12.按值和按引用的比较
  182. 1Numbers Boolean 类型的值 (true false) 是按值来复制、传递和比较的。
  183. 2)对象、数组以及函数是按引用来复制、传递和比较的。
  184. 3)字符串是按引用复制和传递的,但是是按值来比较的。请注意,假如有两个 String 对象(用 new String("something") 创建的),按引用比较它们,但是,如果其中一个或者两者都是字符串值的话,按值比较它们。
  185.  
  186. 说明:
  187. 1)要想检查两个数组是否包含了相同的元素,不能直接比较数组对象,需要比较 toString() 方法的结果。
  188. 2)鉴于 ASCII ANSI 字符集的构造方法,按序列顺序大写字母位于小写字母的前面(即 小写字母>大写字母)。例如 "a">"A""c">"A"。如果想执行不区分大小写的匹配,可以对两个字符串调用 toUpperCase() toLowerCase()。
  189. 如:
  190. var arr1 = new Array('a', 'b', 'c');
  191. var arr2 = new Array('a', 'b', 'c');
  192. if (arr1 == arr2) {
  193. alert('数组相同');//不会执行
  194. }
  195. if (arr1.toString() == arr2.toString()) {
  196. alert('数组toString()相同')//执行(arr1.toString())
  197. }
  198.  
  199. var str1 = "aaa";
  200. var str2 = "aaa";
  201. if (str1 == str2) {
  202. alert('字符相同')//执行
  203. }
  204.  
  205. var strObj1 =new String("aaa");
  206. var strObj2 = new String("aaa");
  207. if (strObj1 == strObj2) {
  208. alert('字符对象相同')//不会执行
  209. }
  210. 13.传递参数给函数
  211. 按值传递一个参数给函数就是制作该参数的一个独立复本,即一个只存在于该函数内的复本。
  212. 按引用传递对象和数组时,如果直接在函数中用新值覆盖原先的值,在函数外并不反映新值。只有在对象的属性或者数组的元素改变时,在函数外才可以看出。
  213. 如:
  214. // 本代码段破坏(覆盖)其参数,所以调用代码中反映不出变化。
  215. function Clobber(param) {
  216. param = new Object();// 破坏参数;在调用代码中看不到。
  217. param.message = "This will not work";
  218. }
  219. // 本段代码改变参数的属性,在调用代码中可看到属性改变。
  220. function Update(param) {
  221. param.message = "I was changed"; // 改变对象的属性;可从调用代码中看到改变。
  222. }
  223. // 创建一个对象,并赋给一个属性。
  224. var obj = new Object();
  225. obj.message = "This is the original";
  226.  
  227. Clobber(obj);// 调用 Clobber,并输出 obj.message。注意,它没有发生变化。
  228. window.alert(obj.message); // 仍然显示 "This is the original"。
  229.  
  230. Update(obj);// 调用 Update,并输出 obj.message。注意,它已经被改变了。
  231. window.alert(obj.message); // 显示 "I was changed"。
  232. 14.在浏览器中显示信息
  233. document write()和writeln()方法是向body中添加内容的方法,添加的位置是当前执行document.write的位置(如果在<head>中则添加在body的开始位置)。
  234. writeln() 方法与 write() 方法几乎一样,差别仅在于是前者将在所提供的任何字符串后添加一个换行符。在 HTML 中,这通常只会在后面产生一个空格;不过如果使用了 <PRE> <XMP> 标识,这个换行符会被解释,且在浏览器中显示。
  235.  
  236. 15.callapply
  237. call:调用一个对象的一个方法,以另一个对象替换当前对象。
  238. apply:应用某一对象的一个方法,用另一个对象替换当前对象。
  239. 如:
  240. A.call(B,参数) 意思是 A代替B,即调用 A(参数) 方法。参数可以是任意值
  241. apply方法和call用法一样,只是apply参数必须是数组或者arguments 对象。
  242. 这两个对象可用于js的继承实现,如:
  243. function Animal(name){
  244. this.name = name;
  245. this.showName = function(){
  246. alert(this.name);
  247. }
  248. }
  249.  
  250. function Cat(name){
  251. Animal.call(this, name); //用Animal对象替换this对象,即cat就继承了Animal的所有属性和方法
  252. }
  253.  
  254. var cat = new Cat("Black Cat");
  255. cat.showName();
  256.  
  257. 16.比较重要的方法
  258. 1compile()
  259. 把正则表达式编译为内部格式,从而执行得更快。用于在脚本执行过程中编译正则表达式,也可用于改变和重新编译正则表达式。
  260. 如:
  261. function CompileDemo(){
  262. var rs;
  263. var s = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPp"
  264. var r = new RegExp("[A-Z]", "g");
  265. var a1 = s.match(r);
  266. r.compile("[a-z]", "g");//改变并重新编译正则表达式
  267. var a2 = s.match(r);
  268. return(a1 + "\n" + a2;
  269. }
  270. 2encodeURI()、decodeURI()
  271. 将文本字符串编码为一个有效的统一资源标识符 (URI)。
  272. decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。
  273. 说明:
  274. 使用 decodeURI 方法代替已经过时的 unescape 方法;
  275. encodeURI 方法不会对下列字符进行编码:":""/"";" "?"。请使用 encodeURIComponent 方法对这些字符进行编码。
  276. 如:
  277. var test1="http://www.w3school.com.cn/My first/"
  278. document.write(encodeURI(test1)+ "<br />")
  279. document.write((2decodeURI(test1))
  280. 结果:
  281. http://www.w3school.com.cn/My%20first/
  282. http://www.w3school.com.cn/My first/
  283.  
  284. 3encodeURIComponent()、decodeURIComponent()
  285. 将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。
  286. decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。
  287. 如:
  288. var test1="http://www.w3school.com.cn/My first/"
  289. document.write(encodeURIComponent(test1)+ "<br />")
  290. document.write(decodeURIComponent(test1))
  291. 结果:
  292. http%3A%2F%2Fwww.w3school.com.cn%2FMy%20first%2F
  293. http://www.w3school.com.cn/My first/
  294.  
  295. 4escape()、unescape()
  296. escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
  297. 可以使用 unescape() escape() 编码的字符串进行解码.
  298. 说明:
  299. escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI encodeURIComponent 方法。
  300. 如:
  301. escape("Visit W3School!")//Visit%20W3School%21
  302. escape("?!=()#%&")//%3F%21%3D%28%29%23%25%26
  303. (5)eval()
  304. 检查 JScript 代码并执行
  305. var total = eval("6 * 9 % 7"); // 将变量 total 赋值为 5。
  306. total = eval("6 * (9 % 7)") // 将变量 total 赋值为 12。
  307. eval("var mydate = new Date();");//创建了一个包含 Date 对象的新变量 mydate.
  308. (6)exec()、match()
  309. exec() RegExp类的方法,参数是要匹配的字符串,只返回第一个匹配项。
  310. match() String类的方法,参数是正则表达式模式或正则表达式对象,返回匹配结果的数组。
  311. 如:
  312. var str= "cat,hat" ;
  313. var p=/at/; //没有g属性
  314. alert(p.exec(str))//at
  315. alert(str.match(p))//"at"
  316. //以上这种场合下exec等价于match。但是如果正则表达式是全局匹配(g属性)的,那么以上代码结果不一样了:
  317. var str= "cat,hat" ;
  318. var p=/at/g; //注意g属性
  319. alert(p.exec(str))//at
  320. alert(str.match(p))//at,at
  321. 说明:
  322. exec()永远只返回第一个匹配,相当于match()中正则表达式不带/g的情况。
  323. 但是,exec如果找到了匹配,而且包含分组的话(正则表达式中含有括号),返回的数组将包含多个元素,第一个元素是找到的匹配,之后的元素依次为该匹配中的第一、第二...个分组(反向引用)如下的代码将弹出"cat2,at":
  324. var str= "cat2,hat8" ;
  325. var p=/c(at)\d/;
  326. alert(p.exec(str));//等于 alert(str.match(p));
  327. (7)Date对象
  328. 1)获取时间
  329. function GetNowDate() {
  330. var d, s = "今天日期是: ",x = new Array("星期日", "星期一", "星期二","星期三","星期四", "星期五","星期六");
  331.  
  332. d = new Date();
  333. s += d.getFullYear() + "-"; //getYear()获取当前时间和1900的差值,该方法已过期
  334. s += (d.getMonth() + 1) + "-";
  335. s += d.getDate() + " ";
  336.  
  337. s += d.getHours() + ":";
  338. s += d.getMinutes() + ":";
  339. s += d.getSeconds() + ":";
  340. s += d.getMilliseconds()+" ";
  341.  
  342. var day = d.getDay(); //获取星期,返回0 到 6 之间的整数,代表周日到周六
  343. s += x[day]+" ";
  344.  
  345. var time = d.getTime(); //从1970 年 1 月 1 日开始的毫秒数
  346. s += "\n\r距离1970年1月1日已过【" + time + "】毫秒";
  347.  
  348. var tz = d.getTimezoneOffset(); //当前计算机上的时间和全球标准时间 (UTC)之间差别的总分钟数(计算方法:UTC-当前机器时间,即当前机器慢为正值,否则为负值)
  349. s += "\n\r您的电脑和全球标准时间(UTC)相差了【" + tz + "】分钟";
  350. return s;
  351. }
  352. alert(GetNowDate());
  353. 2)设置时间
  354. Date对象中以set开头的方法表示设置时间,如:setFullYear()设置年份,setDate()设置日期……等,这些函数返回的是修改后的毫秒数。
  355. 如果参数为月份的有效日期,则直接把日期改为参数日期,
  356. 如:new Date(new Date("2013-7-12 0:0:0:0").setDate(2)).toLocaleString() //"2013/7/2 上午12:00:00"
  357. 如果 参数 的值大于 Date 对象中所保存的月份的天数或者是负数。那么日期将被设置为由 参数 减去所保存月份中天数而得到的日期,
  358. 如:
  359. new Date(new Date("2013-7-12 0:0:0:0").setDate(-2)).toLocaleString() //"2013/6/28 上午12:00:00"
  360. new Date(new Date("2013-7-12 0:0:0:0").setDate(32)).toLocaleString() //"2013/8/1 上午12:00:00"
  361.  
  362. 3)Date.parse()
  363. 参数是一个日期字符串,返回该日期与 1970 1 1 日午夜之间所间隔的毫秒数。
  364. 如:
  365. Date.parse("2015-7-12 0:0:0")//
  366. Date.parse("November 1, 1997 10:17 AM")//
  367.  
  368. (8)indexOf()、lastIndexOf()
  369. 返回 String 对象内第一次和最后一次出现子字符串的字符位置。
  370.  
  371. (9)isFinite()
  372. 返回一个 Boolean 值,指明所提供的数字是否是有限的。
  373. 如果 参数 NaN 、负无穷或正无穷,那么 该方法将返回 false 如果是这三种情况,函数返回 trues
  374. 说明:如果参数是字符类型(指无法强制转化为Number类型的),则返回 false .
  375. (10)isNaN()
  376. 返回一个 Boolean 值,指明提供的值是否是保留值 NaN (不是数字)。
  377. 如果值是 NaN 那么 isNaN 函数返回 true ,否则返回 false 使用这个函数的典型情况是检查 parseInt parseFloat 方法的返回值。
  378. 还有一种办法,变量可以与它自身进行比较。 如果比较的结果不等,那么它就是 NaN 这是因为 NaN 是唯一与自身不等的值。
  379. (11)Array 对象
  380. 增加:
  381. push(element):将新元素添加到数组末尾,返回值:新数组长度。
  382. eg
  383. [1,2,3].push(4) => 4
  384. unshift(element):将新元素添加到数组开始位置,返回值:新数组长度。
  385. eg
  386. [1,2,3,4,5,6].unshift(0,-1) => 8 (新数组:[0, -1, 1, 2, 3, 4, 5, 6])
  387. 删除:
  388. pop():移除数组中的最后一个元素,返回值:被移除的元素。
  389. eg
  390. [1,2,3].pop() => 3
  391. shift():移除数组中的第一元素,返回值:被移除的元素。
  392. eg
  393. [1,2,3].shift() => 1
  394. 修改:
  395. splice(startIndex,deleteCount,[newElement1,newElement2...]):移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回值:所移除的元素
  396. eg
  397. [1,2,3,4,5,6].splice(2,2) => [3, 4] (新数组:[1,2,5,6])
  398. [1,2,3,4,5,6].splice(2,2,10,11,12) => [3, 4] (新数组:[1, 2, 10, 11, 12, 5, 6])
  399. 查询:
  400. slice(startIndex,endIndex):返回数组的一部分,返回值:[startIndex,endIndex) 中的元素(包含开始索引的元素,不包含结束索引的元素)。
  401. eg
  402. [1,2,3,4,5,6].slice(2,4) => [3, 4]
  403. 说明:
  404. 如果 startIndex 为负,将它作为 length + startIndex处理,此处 length 为数组的长度。[1,2,3,4,5,6].slice(-4,4) => [3, 4]
  405. 如果 endIndex 为负,就将它作为 length + endIndex 处理,此处 length 为数组的长度。[1,2,3,4,5,6].slice(2,-1) => [3, 4, 5]
  406. 如果省略 endIndex ,那么 slice 方法将一直复制到 arrayObj 的结尾。[1,2,3,4,5,6].slice(2) => [3, 4, 5, 6]
  407. 如果 endIndex 出现在 startIndex 之前,不复制任何元素到新数组中。[1,2,3,4,5,6].slice(4,2) => []
  408. 其他操作:
  409. concat(arr1,arr2...):拼接(或组合)多个数组,返回值:组合后的新数组。
  410. eg:
  411. [1,2,3].concat([2,3,4]) => [1, 2, 3, 2, 3, 4]
  412. join(str):用指定的符号str把数组元素连接成一个字符串,返回值:拼接后的字符串。
  413. eg
  414. [1,2,3].join('-') => 1-2-3
  415. reverse():反转数组元素,返回值:数组反转后的新数组。
  416. eg
  417. [1,2,3].reverse() => [3,2,1]
  418. sort([functionName]):对数组进行排序,返回值:新排序后的数组。(参数是用来排序的函数,如果参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列)
  419. eg
  420. [6, 5, 4, 3, 2, 1].sort() => [1, 2, 3, 4, 5, 6]
  421. [10,5,40,25,1000,1].sort() => [1, 10, 1000, 25, 40, 5] //这种情况需要用到排序函数了
  422. [10,5,40,25,1000,1].sort(function(a,b){return a>b}) =>[1, 5, 10, 25, 40, 1000]

JavaScript基础知识整理的更多相关文章

  1. JavaScript基础知识整理(2)

    15.处理图像 注意:(1)在写js文件时,尽量将函数的声明往后写,将函数调用写在前面,这样能够使代码结构很清晰. (2)一个网页中翻转器一般超过3个,所以使用for循环减少重复使用翻转器代码的次数. ...

  2. Javascript 基础知识整理

    Javascript的作用 表单验证,减轻服务器压力 添加页面动画效果 动态更改页面内容 Ajax网络请求(异步加载数据) -它属于前端的核心,主要用来控制和重新调整DOM,通过修改DOM结构,从而达 ...

  3. JavaScript基础知识整理(1)

    粗略理解,努力入门中 1.在html中引入外部脚本:  <script src="filename.js"></script> 2.注释:  多于一行的长注 ...

  4. JavaScript基础知识整理(1)数组

    第一:创建. 1,var arr= new Array(); //数组为空.长度为0. arr[0]="apple"; arr[1]="orange"; arr ...

  5. javascript基础知识整理(不定时更新)

    1.js中真与假的定义: 真:true,非零数字,非空字符串,非空对象 假:false,数字零,空字符串,空对象(null),undefined 2.使用for循环对json进行循环操作 for(va ...

  6. Kali Linux渗透基础知识整理(二)漏洞扫描

    Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...

  7. Javascript基础知识总结一

    Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

  8. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  9. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

随机推荐

  1. lucene索引文件大小优化小结

    http://www.cnblogs.com/LBSer/p/4068864.html 随着业务快速发展,基于lucene的索引文件zip压缩后也接近了GB量级,而保持索引文件大小为一个可以接受的范围 ...

  2. iOS开发-UITableView顶部图片下拉放大

    关于顶部图片下拉放大,在用户展示的个人中心显示用户个人头像信息,设置UITableView的headerView实现,UITableView继承自UIScrollView,同样的设置UIScrollV ...

  3. spring 配置定时任务

    spring的定时任务配置分为三个步骤:1.定义任务2.任务执行策略配置3.启动任务1.定义任务 <!--要定时执行的方法--> <bean id="testTaskJob ...

  4. elclipse/myeclipse web.xml自动提示补全问题

    默认情况下,在编辑web.xml时是没有自动提示功能的,只能在编辑完成保存时验证语法是否正确. 解决方法: 1.下载(保存)http://java.sun.com/xml/ns/j2ee/web-ap ...

  5. Liferay7 BPM门户开发之28: Portlet文件上传,及实体类同步更新上传

    抓住核心 . Liferay文件上传的核心就是使用UploadPortletRequest类 继承关系java.lang.Object extended byjavax.servlet.Servlet ...

  6. 常用基础OC 集合

    //    2016年07月19日17:50:53    集合 //七.NSSet 集合对象(容器类,) //  1. 使用类方法创建对象 NSSet *set1 = [NSSet set];  // ...

  7. 淘宝TOP之API测试

    下面的文章,是很早之前写的.内容过时了.主要是获取session的方法,很简单了.作为一个中小型网站开发者,淘宝API的开放大大缩短了网站的开发周期和运作效率,面对海量的数据,开发者只要仔细阅读开发文 ...

  8. 493萬Gmail用戶的賬號密碼遭洩露,Google否認自己存在安全漏洞

    最近,大公司在互聯網信息安全問題上狀況頻出.上週,蘋果因iCloud被黑客攻擊而導致大量明星私照外洩,著實是熱鬧了一陣.而Google也來湊熱鬧了.據俄羅斯媒體CNews消息,近493萬Gmail用戶 ...

  9. DRAM 内存介绍(三)

    参考资料:http://www.anandtech.com/show/3851/everything-you-always-wanted-to-know-about-sdram-memory-but- ...

  10. apache的hadoop升级到CDH hadoop2.0时遇到的问题及解决

    1:引入的jar包 1.X版本有hadoop-core包:而2.x没有 如果你需要hdfs就引入\share\hadoop\common\lib + hadoop-common-2.0.0-cdh4. ...