javascript
文章平均质量分 69
sanlingwu
这个作者很懒,什么都没留下…
展开
-
两种websocket实践
以前对websocket能躲则躲,两个项目都被逼着用了websocket之后觉得也算了入了个门,分别记录一下两个项目中的使用方式,好记性不如烂笔头~零、基础知识WebSocket对象的“readyState”属性记录连接过程中的状态值属性值 属性常量 描述 0 CONNECTING 连接尚未建立 1 OPEN 连接已经建立 2 CLOSING 连接正在关闭 3 CLOSED 连接已经关闭或不可用 判断ws对...原创 2021-08-16 12:20:32 · 491 阅读 · 0 评论 -
使用 ~x.indexOf('y')来简化 x.indexOf('y')>-1
var str = 'hello world';if (str.indexOf('lo') > -1) { // ...}if (~str.indexOf('lo')) { // ...}转载 2018-02-19 11:30:55 · 274 阅读 · 0 评论 -
获取日期时间缀
// 获取指定时间的时间缀new Date().getTime();(new Date()).getTime();(new Date).getTime();// 获取当前的时间缀Date.now();// 日期显示转换为数字+new Date();转载 2018-02-19 11:29:20 · 346 阅读 · 0 评论 -
将argruments对象转换成数组
var argArray = Array.prototype.slice.call(arguments);// ES6:var argArray = Array.from(arguments)// orvar argArray = [...arguments];转载 2018-02-19 11:27:49 · 239 阅读 · 0 评论 -
用最短的代码实现一个长度为m(6)且值都n(8)的数组
Array(6).fill(8); // [8, 8, 8, 8, 8, 8]转载 2018-02-19 11:26:42 · 219 阅读 · 0 评论 -
最短的代码实现数组去重
[...new Set([1, "1", 2, 1, 1, 3])]; // [1, "1", 2, 3]转载 2018-02-19 11:25:59 · 1251 阅读 · 0 评论 -
数字字符转数字
var a = '1';+a; // 1转载 2018-02-19 11:24:47 · 147 阅读 · 0 评论 -
两个整数交换数值
var a = 20, b = 30;a ^= b;b ^= a;a ^= b;a;//30b;//20转载 2018-02-19 11:24:01 · 423 阅读 · 0 评论 -
匿名函数自执行写法
( function() {}() );( function() {} )();[ function() {}() ]; ~ function() {}();! function() {}();+ function() {}();- function() {}(); delete function() {}();typeof function() {}();voi...转载 2018-02-19 11:20:34 · 205 阅读 · 0 评论 -
parseInt() or Number()
两者的差别之处在于解析和转换两者之间的理解。解析允许字符串中含有非数字字符,解析按从左到右的顺序,如果遇到非数字字符就停止。而转换不允许出现非数字字符,否则会失败并返回NaN。var a = '520';var b = '520px';Number(a); // 520parseInt(a); // 520Number(b); // NaNparseInt(b); // 520par...转载 2018-02-19 11:36:45 · 151 阅读 · 0 评论 -
+ 拼接操作,+x or String(x)?
+运算符可用于数字加法,同时也可以用于字符串拼接。如果+的其中一个操作符是字符串(或者通过 隐式强制转换可以得到字符串),则执行字符串拼接;否则执行数字加法。需要注意的是对于数组而言,不能通过 valueOf()方法得到简单基本类型值,于是转而调用 toString()方法。[1,2] + [3, 4]; // "1,23,4"对于对象同样会先调用 valueOf()方法,然后通过 toStr...转载 2018-02-19 11:45:24 · 188 阅读 · 0 评论 -
判断对象的实例
// 方法一: ES3function Person(name, age) { if (!(this instanceof Person)) { return new Person(name, age); } this.name = name; this.age = age;}// 方法二: ES5function Person(name,...转载 2018-02-19 11:49:30 · 275 阅读 · 0 评论 -
【随笔】with函数
做笔试做到一道题中有with函数,emmmm没见过诶之前,记录一下:with 函数,为语句设定默认对象。with 函数 ,即所谓的with 语句,可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性,要给对象创建新的属性,必须明确地引用该对象。举例:let obj={a:3}with(obj){console.log(a);//3}即为a指...原创 2019-04-11 22:34:12 · 540 阅读 · 0 评论 -
js的自输入输出
在牛客网上答腾讯的笔试题,用js答题的我真的是一把辛酸泪。。。居然要自己写输入啊喂,leetcode不是这么教我的(捂脸),所以先附上牛客网的官方教程:https://www.nowcoder.com/discuss/276然后下面附上自己的理解:var readline=require("readline");const rl=readline.createInterface({ ...原创 2019-03-10 10:13:09 · 2568 阅读 · 0 评论 -
ES5的对象创建以及对象继承
一、对象的创建1、工厂模式function createPerson(){ //内部先声明一个新对象,然后定义对象的属性和方法,最后return这个对象}var person=createPerson();2、构造函数模式function Person(name){//函数名一定大写!!! this.name=name; th...原创 2019-02-27 11:10:18 · 487 阅读 · 0 评论 -
如何对svg中某个标签进行操作
html代码如上,想把最后一条线隐掉,即给最后一个path标签加上display:none的css属性,用document.getElementbyTagName()函数不起作用,代码如下:$("#sdtDropCanvasAll").find("path:last").attr("display","none");:last表示所有对象中的最后一个。...原创 2018-03-14 14:42:59 · 1313 阅读 · 0 评论 -
用20行JS代码实现粘贴板功能
document.execCommand()此方法就是实现剪贴板的关键,它可以传入cut,copy,paste三种参数。从最常用的document.execCommand('copy')开始介绍。在使用之前,我们应该检查浏览器是否支持copy命令:document.queryCommandSupported('copy');或document.queryCommandEnabled('copy')...转载 2018-02-19 12:06:42 · 308 阅读 · 0 评论 -
对象可计算属性名(仅在ES6中)
var suffix = ' name';var person = { ['first' + suffix]: 'Nicholas', ['last' + suffix]: 'Zakas'}person['first name']; // "Nicholas"person['last name']; // "Zakas"转载 2018-02-19 11:54:51 · 2824 阅读 · 0 评论 -
让数字的字面值看起来像对象
2.toString(); // Uncaught SyntaxError: Invalid or unexpected token2..toString(); // 第二个点号可以正常解析2 .toString(); // 注意点号前面的空格(2).toString(); // 2先被计算转载 2018-02-19 11:52:40 · 136 阅读 · 0 评论 -
数据安全类型检查
// 对象function isObject(value) { return Object.prototype.toString.call(value).slice(8, -1) === 'Object'';}// 数组function isArray(value) { return Object.prototype.toString.call(value).slice(...转载 2018-02-19 11:51:15 · 196 阅读 · 0 评论 -
JavaScript 错误处理的方式的正确姿势
try { something} catch (e) { window.location.href = "http://stackoverflow.com/search?q=[js]+" + e.message;}转载 2018-02-18 13:22:35 · 199 阅读 · 0 评论 -
单行写一个评级组件
"★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);转载 2018-02-18 13:20:01 · 208 阅读 · 0 评论 -
使用 void0来解决 undefined被污染问题
undefined = 1;!!undefined; // true!!void(0); // false转载 2018-02-18 13:18:53 · 263 阅读 · 0 评论 -
驼峰命名转下划线
'componentMapModelRegistry'.match(/^[a-z][a-z0-9]+|[A-Z][a-z0-9]*/g).join('_').toLowerCase(); // component_map_model_registry转载 2018-02-18 11:27:18 · 494 阅读 · 0 评论 -
16进制颜色代码生成
(function() { return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).slice(-6);})();转载 2018-02-18 11:23:31 · 559 阅读 · 0 评论 -
生成6位数字验证码
// 方法一('000000' + Math.floor(Math.random() * 999999)).slice(-6);// 方法二Math.random().toString().slice(-6);// 方法三Math.random().toFixed(6).slice(-6);// 方法四'' + Math.floor(Math.random() * 99999...转载 2018-02-18 11:21:10 · 4632 阅读 · 0 评论 -
浮点数取整
const x = 123.4545;x >> 0;//123~~x;//123x | 0;//123Math.floor(x);//123前3种方法只适用于32个位整数,对于负数的处理上和Math.floor是不同的。Math.floor(-12.53);//-13-12.53 | 0;//-12...转载 2018-02-18 11:06:42 · 5092 阅读 · 0 评论 -
以json格式存储的一棵树,找到特定节点
function json(jsontree) { //根据id找到相应树节点 if ((typeof jsontree == 'object') && (jsontree.constructor == Object.prototype.constructor)) { var arrey = []; arrey.push(jsontree); } e原创 2018-01-24 15:58:13 · 2847 阅读 · 0 评论 -
对浏览器的窗口的一些操作
1、打开新窗口 window.open("index.html");2、关闭当前窗口if (confirm("您确定要关闭该窗口吗?")) { if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Chrome") != -1) { window.location原创 2018-01-24 15:38:29 · 215 阅读 · 0 评论 -
循环为每一个元素绑定点击事件
在一个拖拽系统中,想为每一个被拖到画布上的元素绑定点击事件:var idArray = new Array();//在foreach中idArray.push(id)//拖拽结束for (var i = 0; i < idArray.length; i++) { (function() { //console.log('here')原创 2018-01-24 15:24:31 · 2131 阅读 · 0 评论 -
手机端和pc端加载不同的样式
function loadCSS() { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|wOSBrowser|BrowserNG|WebOS)/i))) { document.write(''); //al转载 2018-01-31 14:41:56 · 2397 阅读 · 0 评论 -
url查询参数转json格式
// ES6const query = (search = '') => ((querystring = '') => (q => (querystring.split('&').forEach(item => (kv => kv[0] && (q[kv[0]] = kv[1]))(item.split('='))), q))({}))(se...转载 2018-02-18 11:41:12 · 964 阅读 · 0 评论 -
获取URL参数
function getQueryString(key){ var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if(r!=null){ return unescape(r...转载 2018-02-18 11:50:41 · 116 阅读 · 0 评论 -
n维数组展开成一维数组
var foo = [1,[2,3],['4',5,['6',7,[8]]],[9],10];//方法1 //限制:数组项不能出现',',同时数组项全部变成了字符数字foo.toString().split(',');//["1","2","3","4","5","6","7","8","9","10"转载 2018-02-18 12:04:30 · 632 阅读 · 0 评论 -
统计字符串中相同字符出现的次数
var arr = 'abcdaabc';var info = arr .split('') .reduce((p, k) => (p[k]++ || (p[k] = 1), p), {});console.log(info); //{ a: 3, b: 2, c: 2, d: 1 }转载 2018-02-18 13:17:37 · 1376 阅读 · 1 评论 -
测试质数
function isPrime(n){ return !(/^.?$|^(..+?)\1+$/).test('1'.repeat(n))}转载 2018-02-18 13:15:27 · 302 阅读 · 0 评论 -
身份证验证
function chechCHNCardId(sNo) { if (!this.regExpTest(sNo, /^[0-9]{17}[X0-9]$/)) { return false; } sNo = sNo.toString(); var a, b, c; a = parseInt(sNo.substr(0, 1)) * 7...转载 2018-02-18 13:12:36 · 148 阅读 · 0 评论 -
格式化数量
// 方法一function formatNum (num, n) { if (typeof num == "number") { num = String(num.toFixed(n || 0)); var re = /(-?\d+)(\d{3})/; while (re.test(num)) num = num.replace(re, ...转载 2018-02-18 12:57:02 · 221 阅读 · 0 评论 -
动态插入js
function injectScript(src) { var s, t; s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = src; t = document.getElementsByTagName('script'...转载 2018-02-18 12:50:16 · 645 阅读 · 0 评论 -
特殊字符转义
function htmlspecialchars (str) { var str = str.toString().replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"'); return str;}console.log(htmls转载 2018-02-18 12:47:01 · 774 阅读 · 0 评论