1. String.prototype.isNullOrWhiteSpace = function () {
  2. /// <summary>
  3. /// 变量是undefined或者null或者空字符串 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
  4. /// </summary>
  5. /// <returns type="Boolean" />
  6. if (this.trim() == "") {
  7. return true;
  8. }
  9. else if (this == null) {
  10. return true;
  11. }
  12. else {
  13. return false;
  14. }
  15. }
  16. String.prototype.trim = function () {
  17. /// <summary>
  18. /// 去除左右所有空格
  19. /// </summary>
  20. /// <returns type="String" />
  21. return this.replace(/(^\s*)|(\s*$)/g, "");
  22. }
  23. String.prototype.ltrim = function () {
  24. /// <summary>
  25. /// 去除左所有空格 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
  26. /// </summary>
  27. /// <returns type="String" />
  28. return this.replace(/(^\s*)/g, "");
  29. }
  30. String.prototype.rtrim = function () {
  31. /// <summary>
  32. /// 去除右所有空格
  33. /// </summary>
  34. /// <returns type="String" />
  35. return this.replace(/(\s*$)/g, "");
  36. }
  37. String.prototype.isNumber = function () {
  38. /// <summary>
  39. /// 是否是数字
  40. /// </summary>
  41. /// <returns type="Boolean" />
  42. return this != "" && !isNaN(this);
  43. }
  44. Number.prototype.isNumber = function () {
  45. /// <summary>
  46. /// 是否是数字 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
  47. /// </summary>
  48. /// <returns type="Boolean" />
  49. return this.toString().isNumber();
  50. }
  51. String.prototype.toFix = function (fix, isComplement) {
  52. /// <summary>
  53. /// 去掉多余小数并且不四舍五入
  54. /// </summary>
  55. /// <param name="fix" type="int">
  56. /// 要保留的小数位数 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
  57. /// </param>
  58. /// <param name="isComplement" type="string">
  59. /// 是否补位 true false
  60. /// </param>
  61. /// <returns type="Number" />
  62. if (this.isNumber() && fix.isNumber()) {
  63. var array = this.split('.');
  64. if (array.length > 1 && fix.toString().split('.').length == 1) {
  65. if (fix <= 0) {
  66. return Number(array[0]);
  67. }
  68. if (isComplement == "true") {
  69. while (array[1].length < fix) {
  70. array[1] += "0";
  71. }
  72. return array[0] + "." + array[1].substring(0, fix);
  73. }
  74. return Number(array[0] + "." + array[1].substring(0, fix));
  75. }
  76. else {
  77. if (isComplement == "true") {
  78. var point = "";
  79. while (point.length < fix) {
  80. point += "0";
  81. }
  82. return this.toString() + "." + point;
  83. }
  84. }
  85. }
  86. return Number(this);
  87. }
  88. Number.prototype.toFix = function (fix, isComplement) {
  89. /// <summary>
  90. /// 去掉多余小数并且不四舍五入
  91. /// </summary>
  92. /// <param name="fix" type="int">
  93. /// 要保留的小数位数
  94. /// </param>
  95. /// <param name="isComplement" type="string">
  96. /// 是否补位 true false
  97. /// </param>
  98. /// <returns type="Number" />
  99. return this.toString().toFix(fix.toString(), isComplement);
  100. }
  101.  
  102. Number.prototype.fAdd = function (arg2) {
  103. /// <summary>
  104. /// 浮点加法运算(解决JS浮点运算的bug)
  105. /// </summary>
  106. /// <param name="arg2" type="int">
  107. /// 右表达式 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
  108. /// </param>
  109. /// <returns type="Number" />
  110. var arg1 = this.toString();
  111. var r1, r2, m;
  112. try {
  113. r1 = arg1.toString().split(".")[1].length
  114. } catch (e) { r1 = 0 }
  115. try {
  116. r2 = arg2.toString().split(".")[1].length
  117. } catch (e) { r2 = 0 }
  118. m = Math.pow(10, Math.max(r1, r2));
  119. return Number((arg1 * m + arg2 * m) / m);
  120. }
  121. Number.prototype.fSub = function (arg2) {
  122. /// <summary>
  123. /// 浮点减法运算(解决JS浮点运算的bug)
  124. /// </summary>
  125. /// <param name="arg2" type="int">
  126. /// 右表达式
  127. /// </param>
  128. /// <returns type="Number" />
  129. var arg1 = this.toString();
  130. var r1, r2, m, n;
  131. try {
  132. r1 = arg1.toString().split(".")[1].length
  133. } catch (e) { r1 = 0 }
  134. try {
  135. r2 = arg2.toString().split(".")[1].length
  136. } catch (e) { r2 = 0 }
  137. m = Math.pow(10, Math.max(r1, r2));
  138. //动态控制精度长度 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
  139. n = (r1 >= r2) ? r1 : r2;
  140. return Number(((arg1 * m - arg2 * m) / m).toFixed(n));
  141. }
  142. Number.prototype.fMul = function (arg2) {
  143. /// <summary>
  144. /// 浮点乘法运算(解决JS浮点运算的bug)
  145. /// </summary>
  146. /// <param name="arg2" type="int">
  147. /// 右表达式
  148. /// </param>
  149. /// <returns type="Number" />
  150. var arg1 = this;
  151. var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
  152. try {
  153. m += s1.split(".")[1].length
  154. } catch (e) { }
  155. try {
  156. m += s2.split(".")[1].length
  157. } catch (e) { }
  158. return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
  159. }
  160. Number.prototype.fDiv = function (arg2) {
  161. /// <summary>
  162. /// 浮点除法运算(解决JS浮点运算的bug)
  163. /// </summary>
  164. /// <param name="arg2" type="int">
  165. /// 右表达式
  166. /// </param>
  167. /// <returns type="Number" />
  168. var arg1 = this;
  169. var t1 = 0, t2 = 0, r1, r2;
  170. try {
  171. t1 = arg1.toString().split(".")[1].length
  172. } catch (e) { }
  173. try {
  174. t2 = arg2.toString().split(".")[1].length
  175. } catch (e) { }
  176. with (Math) {
  177. r1 = Number(arg1.toString().replace(".", ""));
  178. r2 = Number(arg2.toString().replace(".", ""));
  179. return Number((r1 / r2) * pow(10, t2 - t1));
  180. }
  181. }
  182.  
  183. function strToJson(str) {
  184. /// <summary>
  185. /// 字符串转json
  186. /// </summary>
  187. /// <param name="str" type="String">
  188. /// 要转换的字符串 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
  189. /// </param>
  190. /// <returns type="Object" />
  191. var json = (new Function("return " + str))();
  192. return json;
  193. }
  194. String.prototype.toJson = function (formatStr) {
  195. /// <summary>
  196. /// 字符串转json
  197. /// </summary>
  198. /// <returns type="Object" />
  199. return (new Function("return " + this))();
  200. }
  201. Array.prototype.toJson = function () {
  202. var o = this;
  203. var r = [];
  204. if (typeof o == "string") return "\"" + o.replace(/([\'\"\\])/g, "\\$1").replace(/(\n)/g, "\\n").replace(/(\r)/g, "\\r").replace(/(\t)/g, "\\t") + "\"";
  205. if (typeof o == "object") {
  206. if (!o.sort) {
  207. for (var i in o)
  208. r.push(i + ":" + o[i].toJson());
  209. if (!!document.all && !/^\n?function\s*toString\(\)\s*\{\n?\s*\[native code\]\n?\s*\}\n?\s*$/.test(o.toString)) {
  210. r.push("toString:" + o.toString.toString());
  211. }
  212. r = "{" + r.join() + "}";
  213. } else {
  214. for (var i = 0; i < o.length; i++) {
  215. r.push(o[i].toJson());
  216. }
  217. r = "[" + r.join() + "]";
  218. }
  219. return r;
  220. }
  221. return o.toString();
  222. }
  223.  
  224. function jsonDateFormat(jsonDate) {
  225. /// <summary>
  226. /// json日期格式转换为正常格式
  227. /// </summary>
  228. /// <param name="jsonDate" type="String">
  229. /// json日期
  230. /// </param>
  231. /// <returns type="String" />
  232. try {//出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
  233. var date = new Date(parseInt(jsonDate.replace("/Date(", "").replace(")/", ""), 10));
  234. var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
  235. var day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
  236. var hours = date.getHours();
  237. var minutes = date.getMinutes();
  238. var seconds = date.getSeconds();
  239. var milliseconds = date.getMilliseconds();
  240. milliseconds = myPow(10, (3 - milliseconds.toString().length)).toString().substr(1) + milliseconds.toString();
  241. return date.getFullYear() + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds + "." + milliseconds;
  242. } catch (ex) {//出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
  243. return "";
  244. }
  245.  
  246. /*
  247. 快速幂计算,传统计算方式如果幂次是100就要循环100遍求值
  248. 快速幂计算只需要循环7次即可
  249. 求x的y次方 x^y可以做如下分解
  250. 把y转换为2进制,设第n位的值为i,计算第n位的权为x^(2^(n-1)*i)
  251. 例如2^12
  252. 12的二进制是1100
  253. 12=2^3*1+2^2*1+2^1*0+2^0*0
  254. 因此2^12=2^(2^3+2^2)
  255. 分解得到2^12=2^(2^3)*2^(2^2)
  256. */
  257. function myPow(dx, dy) {
  258. var r = 1;
  259. while (dy != 0) {
  260. var b = dy & 1; //取最末尾的一位数,也可以判断奇偶数,奇数:1,偶数:0
  261. if (b) {//如果最末尾的数是1,储存有效值
  262. r *= dx;
  263. }
  264. dx *= dx; //这里即完成了x^(2^(n-1)*i)的计算
  265. dy >>= 1; //右位移去掉末尾1位,也可以看成是除以2取整数
  266. }
  267. return r;
  268. }
  269. }
  270.  
  271. String.prototype.toPriceString = function () {
  272. var arr = this.split('.');
  273. var left = arr[0];
  274. var right = "00";
  275. if (arr.length > 1) {
  276. right = arr[1];
  277. var rightL = right.length;
  278. if (rightL < 2) {
  279. right += "0";
  280. }
  281. else if (rightL > 2) {
  282. right = right.substring(0, 2);
  283. }
  284. }
  285.  
  286. var res = new Array();
  287. while (left.length > 3) {
  288. res[res.length] = left.substr(-3);
  289. left = left.substring(0, left.length - 3);
  290. }
  291. res[res.length] = left;
  292. return res.reverse().join(',');
  293. };
  294. Number.prototype.toPriceString = function () {
  295. return this.toString().toPriceString();
  296. };
  297.  
  298. String.prototype.toUsuDate = function (formatStr) {
  299. /// <summary>
  300. /// json日期格式转换为正常格式
  301. /// </summary>
  302. /// <param name="formatStr" type="String">
  303. /// 格式化字符串格式 yyyy-mm-dd hh:mm:ss.fff 可以从尾部开始省略格式,不能截断或者从头开始省略
  304. /// 可以是yy-m-d 或者yy-mm-d等等 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
  305. /// </param>
  306. /// <returns type="String" />
  307. if (formatStr == undefined || formatStr == null || formatStr == "") {
  308. return jsonDateFormat(this);
  309. }
  310. var formatArr = formatStr.split(/[-\s:\.]/g);
  311. var dateArr = jsonDateFormat(this).split(/[-\s:\.]/g);
  312. var resultData = [];
  313. if (formatArr.length > 7 || dateArr < 2) {
  314. return "0000-00-00";
  315. }
  316. for (var i = 0, j = formatArr.length; i < j; i++) {
  317. switch (i) {
  318. case 0:
  319. var len = formatArr[i].length;
  320. dateArr[i] = dateArr[i].substr(-len);
  321. resultData[i] = dateArr[i];
  322. break;
  323. case 1:
  324. if (dateArr[i] < 10) {
  325. var len = formatArr[i].length;
  326. dateArr[i] = dateArr[i].substr(-len);
  327. }
  328. resultData[i] = "-" + dateArr[i];
  329. break;
  330. case 2:
  331. if (dateArr[i] < 10) {
  332. var len = formatArr[i].length;
  333. dateArr[i] = dateArr[i].substr(-len);
  334. }
  335. resultData[i] = "-" + dateArr[i];
  336. break;
  337. case 3:
  338. if (dateArr[i] < 10) {
  339. var len = formatArr[i].length;
  340. dateArr[i] = dateArr[i].substr(-len);
  341. }
  342. resultData[i] = " " + dateArr[i];
  343. break;
  344. case 4:
  345. if (dateArr[i] < 10) {
  346. var len = formatArr[i].length;
  347. dateArr[i] = dateArr[i].substr(-len);
  348. }
  349. resultData[i] = ":" + dateArr[i];
  350. break;
  351. case 5:
  352. if (dateArr[i] < 10) {
  353. var len = formatArr[i].length;
  354. dateArr[i] = dateArr[i].substr(-len);
  355. }
  356. resultData[i] = ":" + dateArr[i];
  357. break;
  358. case 6:
  359. var len = formatArr[i].length;
  360. resultData[i] = "." + dateArr[i].substr(-len);
  361. break;
  362. default:
  363. }
  364. }
  365. return resultData.join('');
  366. }
  367.  
  368. function GetRequest() {
  369. /// <summary>
  370. /// 获取url中"?"符后的字串
  371. /// 使用方法:
  372. /// var Request = new Object();
  373. /// Request = GetRequest();
  374. /// var 参数1, 参数2, 参数3, 参数N;
  375. /// 参数1 = Request['参数1'];
  376. /// 参数2 = Request['参数2'];
  377. /// 参数3 = Request['参数3'];
  378. /// 参数N = Request['参数N'];
  379. /// </summary>
  380. /// <returns type="String" />
  381. var url = location.search;
  382. var theRequest = new Object();
  383. if (url.indexOf("?") != -1) {
  384. var str = url.substr(1);
  385. strs = str.split("&");
  386. for (var i = 0; i < strs.length; i++) {
  387. theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
  388. }
  389. }
  390. return theRequest;
  391. }
  392. var Request = (function () {
  393. /// <summary>
  394. /// 获取url中"?"符后的字串
  395. /// 使用方法:
  396. /// 参数1 = Request['参数1'];
  397. /// 参数2 = Request['参数2'];
  398. /// 参数3 = Request['参数3'];
  399. /// 参数N = Request['参数N'];
  400. /// </summary>
  401. /// <returns type="String" />
  402. var url = location.search;
  403. var theRequest = new Object();
  404. if (url.indexOf("?") != -1) {
  405. var str = url.substr(1);
  406. strs = str.split("&");
  407. for (var i = 0; i < strs.length; i++) {
  408. theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
  409. }
  410. }
  411. return theRequest;
  412. })();
  413.  
  414. function isNullObj(obj) {
  415. /// <summary>
  416. /// 对象是否有值
  417. /// </summary>
  418. /// <param name="obj" type="Object">
  419. /// 对象obj 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
  420. /// </param>
  421. /// <returns type="Boolean" />
  422. for (var i in obj) {
  423. return false;
  424. }
  425. return true;
  426. }
  427. //Object.prototype.hasValue = function () {//Object的原型链增加方法会影响到jq和ztree
  428. // /// <summary>
  429. // /// 对象是否有值
  430. // /// </summary>
  431. // /// <param name="obj" type="Object">
  432. // /// 对象obj
  433. // /// </param>
  434. // /// <returns type="Boolean" />
  435. // for (var i in this) {
  436. // return false;
  437. // }
  438. // return true;
  439. //}
  440.  
  441. Serialize = function (obj) {
  442. /// <summary>
  443. /// 对象序列化
  444. /// </summary>
  445. /// <param name="obj" type="Object">
  446. /// 任意数据类型
  447. /// </param>
  448. /// <returns type="String" />
  449. function __typeof__(objClass) {
  450. if (objClass && objClass.constructor) {
  451. var strFun = objClass.constructor.toString();
  452. var className = strFun.substr(0, strFun.indexOf('('));
  453. className = className.replace('function', '');
  454. return className.replace(/(^\s*)|(\s*$)/ig, '');
  455. }
  456. return typeof (objClass);
  457. };
  458. var type = __typeof__(obj);
  459. switch (type) {
  460. case 'Array':
  461. {
  462. var strArray = '[';
  463. for (var i = 0 ; i < obj.length ; ++i) {
  464. var value = '';
  465. if (obj[i]) {
  466. value = Serialize(obj[i]);
  467. }
  468. strArray += value + ',';
  469. }
  470. if (strArray.charAt(strArray.length - 1) == ',') {
  471. strArray = strArray.substr(0, strArray.length - 1);
  472. }
  473. strArray += ']';
  474. return strArray;
  475. }
  476. case 'Date':
  477. {
  478. return 'new Date(' + obj.getTime() + ')';
  479. }
  480. case 'Function': {
  481. return obj;
  482. }
  483. case 'Number':
  484. case 'number':
  485. case 'Boolean':
  486. case 'String':
  487. {
  488. return "'" + obj.toString() + "'";
  489. }
  490. default:
  491. {
  492. var serialize = '{';
  493. for (var key in obj) {
  494. if (key == 'Serialize') continue;
  495. var subserialize = 'null';
  496. if(obj.hasOwnProperty(key)){
  497. if (obj[key] != undefined) {
  498. subserialize = Serialize(obj[key]);
  499. }
  500. serialize += '\r\n' + key + ' : ' + subserialize + ',';
  501. }
  502. }
  503. if (serialize.charAt(serialize.length - 1) == ',') {
  504. serialize = serialize.substr(0, serialize.length - 1);
  505. }
  506. serialize += '\r\n}';
  507. return serialize;
  508. }
  509. }
  510. };
  511.  
  512. //sandbox
  513. (function () {
  514. var method;
  515. var noop = function () { };
  516. var methods = [
  517. 'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
  518. 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
  519. 'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
  520. 'timeStamp', 'trace', 'warn'
  521. ];
  522. var length = methods.length;
  523. var console = (window.console = window.console || {});
  524. while (length--) {
  525. method = methods[length];
  526. // Only stub undefined methods.
  527. if (!console[method]) {
  528. console[method] = noop;
  529. }
  530. }
  531. }());
  532.  
  533. var sandbox = new _sandbox();
  534. /*
  535.  
  536. sandbox.console.log("123"); //输出log
  537. sandbox.console.close(); //关闭沙箱控制台
  538.  
  539. sandbox.exec(function () { console.log("333"); });//执行一个代码块
  540. sandbox.exec.close(); //关闭沙箱方法执行块
  541.  
  542. sandbox.close(); //关闭整个沙箱
  543. */
  544. function _sandbox() {
  545. /// <summary>
  546. /// 沙箱模式 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
  547. /// </summary>
  548.  
  549. window.sandboxConfig = {
  550. stop_exec: false
  551. };
  552. };
  553. _sandbox.prototype.close = function () {
  554. this.console.close();
  555. this.exec.close();
  556. };
  557. _sandbox.prototype.console = (function () {
  558. return window.console;
  559. }());
  560. _sandbox.prototype.console.close = function () {
  561. var noop = function () { };
  562. var methods = [
  563. 'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
  564. 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
  565. 'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
  566. 'timeStamp', 'trace', 'warn'
  567. ];
  568. var length = methods.length;
  569. var console = (window.console = window.console || {});
  570. while (length--) {
  571. method = methods[length];
  572. console[method] = noop;
  573. }
  574. };
  575. _sandbox.prototype.exec = function (func) {
  576. if (!window.sandboxConfig.stop_exec) {
  577. if (typeof (func) == "function") {
  578. func();
  579. }
  580. } //出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
  581. return this;
  582. };
  583. _sandbox.prototype.exec.close = function () {
  584. window.sandboxConfig.stop_exec = true;
  585. };
  586.  
  587. function clone(jsonObj) {
  588. var buf;
  589. if (jsonObj instanceof Array) {
  590. buf = [];
  591. var i = jsonObj.length;
  592. while (i--) {
  593. buf[i] = arguments.callee(jsonObj[i]);
  594. }
  595. return buf;
  596. } else if (typeof jsonObj == "function") {
  597. return jsonObj;
  598. } else if (jsonObj instanceof Object) {
  599. buf = {};
  600. for (var k in jsonObj) {
  601. buf[k] = arguments.callee(jsonObj[k]);
  602. }
  603. return buf;
  604. } else {
  605. return jsonObj;
  606. }
  607. }

ahjesus不断完善的js小"内裤"的更多相关文章

  1. 一个js小游戏----总结

    花了大概一天左右的功夫实现了一个js小游戏的基本功能,类似于“雷电”那样的小游戏,实现了随即怪物发生器,碰撞检测,运动等等都实现了,下一个功能是子弹轨迹,还有其他一些扩展功能,没有用库,也没有用web ...

  2. React.js 小书 Lesson16 - 实战分析:评论功能(三)

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson16 转载请注明出处,保留原文链接和作者信息. 接下来的代码比较顺理成章了.修改 Commen ...

  3. React.js 小书 Lesson15 - 实战分析:评论功能(二)

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson15 转载请注明出处,保留原文链接和作者信息. 上一节我们构建了基本的代码框架,现在开始完善其 ...

  4. js小功能整理

    /** * 判断是否包含字符串某字符串 * @param {[type]} str [被检测的字符串] * @param {[type]} substr [检测是否含有的字符串] * @return ...

  5. [转载]Js小技巧||给input type=“password”的输入框赋默认值

    http://www.cnblogs.com/Raywang80s/archive/2012/12/06/2804459.html [转载]Js小技巧||给input type="passw ...

  6. 一些js小题(一)

    一些js小题,掌握这些对于一些常见的面试.笔试题应该很有帮助: var a=10; function aa(){ alert(a); } function bb(){ aa(); } bb();//1 ...

  7. 第24篇 js小知识和“坑”

    前面说了说了js的相关知识,基本上除了语法外,把项目常用的知识做了一个梳理,现在说下js的其它方面的知识,这些知识不成体系,属于不理解对于一般开发没什么太多影响,但如果理解清楚,可以更好去开发. js ...

  8. React.js 小书介绍

    React.js 小书 Github 关于作者 这是一本关于 React.js 的小书. 因为工作中一直在使用 React.js,也一直以来想总结一下自己关于 React.js 的一些知识.经验.于是 ...

  9. React.js小书总结

    (迁移自旧博客2017 08 27) 第一阶段 react的组件相当于MVC里面的View. react.js 将帮助我们将界面分成了各个独立的小块,每一个块就是组件,这些组件之间可以组合.嵌套,就成 ...

随机推荐

  1. 何为.Net Remoting【转】

    借助基维百科给它的定义如下: NET Remoting 是微软 .NET Framework 中的一种网络通讯技术,与 XML Web Service 不同的是,它可以使用 SOAP 以外的协定来通讯 ...

  2. Factorization Machine

    Factorization Machine Model 如果仅考虑两个样本间的交互, 则factorization machine的公式为: $\hat{y}(\mathbf{x}):=w_0 + \ ...

  3. Android 使用NDK编译sipdroid Library

    sipdroid是一款开源的运行于Android平台上的voip,目前支持音频和视频通话: 项目拖管地址:http://code.google.com/p/sipdroid/ 下载源代码,导入ecli ...

  4. 简单Bat文件编写

    @ECHO OFFTITLE 清理Work目录E:cd E:\Android_WorkSpace@ECHO ONecho 开始打包MavenTest......mvn install pause @E ...

  5. Nginx+Keepalived实现站点高可用

    http://seanlook.com/2015/05/18/nginx-keepalived-ha/ http://blog.csdn.net/conquer0715/article/details ...

  6. Material Design UI Widgets

    Android L 开发者预览支持库提供两个新的Widgets,RecyclerView和CardView.使用这两个Widgets可以显示复杂的Listview和卡片布局,这两个Widgets默认使 ...

  7. JS事件委托的原理和应用

    js事件委托也叫事件代理,实际上事件委托就是通过事件冒泡实现的,所谓的事件就是onclick,onmouseover,ondown等等,那么委托呢?委托就是指本来这个事是要你自己做的,但是你却让别人帮 ...

  8. 关于Windows Phone平台音乐播放的的技术调研

    希望看到这篇文章的开发者能提供你们的想法,让我们一起来探讨一款wp平台上面一款能流畅播放.能流畅拖拽进入条.只发一次请求就可以缓存的最好的播放器.希望大家能对我下面遇到的问题作出回答. 现在出了Win ...

  9. FAQ: Machine Learning: What and How

    What: 就是将统计学算法作为理论,计算机作为工具,解决问题.statistic Algorithm. How: 如何成为菜鸟一枚? http://www.quora.com/How-can-a-b ...

  10. 受限玻尔兹曼机(RBM)学习笔记(五)梯度计算公式

      去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算 ...