字符串扩展 str.includes(str):判断是否包含指定字符串,返回true\false str.startWidth(str):判断是否以指定字符开头 str.endWidth(str):判断是否以指定字符结尾 str.repeat(count):重复指定次数 数值扩展 Number.isFinite(i) :判断是否有无限大的数 Number.isNaN(i):判断是否NaN Number.isInteger (i):判断是否为整数 Number.parseInt(str):将字符串转换整数 Math.trunc(i):直接去除小数部分 数组扩展 Array.from(v):将伪数组对象或可遍历对象转换为真数组 return true})找出第一个满足条件返回true的元素 arr.findIndex(function(value,index,arr){return true})找出满足条件返回true元素小标 对象扩展
延展运算符:var args = ['url', 123, 'st']; get_names(...args); new.target: 使用new创建一个对象时,会被赋值为新对象的构造器 ES6允许在代码块中定义函数
一、新增 flags 属性 ES6 为正则表达式新增了flags属性,会返回正则表达式的修饰符。 // ES5 的 source 属性 // 返回正则表达式的正文 /abc/ig.source // "abc" // ES6 的 flags 属性 // 返回正则表达式的修饰符 /abc/ig.flags /xyz/, 'i'); // Uncaught TypeError: Cannot supply flags when constructing one RegExp from another ES6 加了u修饰符以后,ES6 将其识别其为一个字符,所以第一行代码结果为false。 关于点字符 点(.)字符在正则表达式中表示除了换行符以外的任意单个字符。 $/u.test(a)); // true 2、y 修饰符 ES6 为正则表达式新增了y修饰符 → “粘连”(sticky)修饰符。
第6章 扩展函数与属性 在使用Java的时候,我们经常使用诸如StringUtil, DateUtil等等一堆工具类,代码写起来也比较冗长。举个例子,获取一个字符串的第一个字符值、最后一个字符值。 void main(String[] args) { List<Integer> list = Arrays.asList(new Integer[] {1, 2, 3, 4, 5, 6, 给List扩展的filter函数签名 然后,我们在代码中只需要这样调用即可 val list = mutableListOf(1, 2, 3, 4, 5, 6, 7) val result 扩展属性的语法 然后,我们就可以在代码中直接使用扩展的属性了 val list = mutableListOf(1, 2, 3, 4, 5, 6, 7) println("list = // 调用 setter 函数 list.lastElement = -7 println("list = ${list}") // list = [-1, 2, 3, 4, 5, 6,
在实际的开发中不管是移动端还是 PC 端都会遇到文本太长,因为宽度不够导致我们需要设置成省略号。文本就文本溢出做一个总结,希望对你们开发过程中有帮助。 阅读本文你将看到如下几部分内容: 单行文本溢出 多行文本溢出 拓展的多行文本溢出 自定义多行文本溢出 高亮多行文本溢出 单行文本溢出 一行文本超出显示是一个最基本的超出最大宽度,显示省略号[1],效果如图所示 www.heyui.top/component/other/textellipsis[5] vue-text-ellipsis:https://github.com/Luobata/vue-text-ellipsis[6] https://www.heyui.top/component/other/textellipsis: https://www.heyui.top/component/other/textellipsis [6] __biz=MzI4NjY4MTU5Nw==&mid=2247486441&idx=2&sn=ce5cc6ba16db4d022f6768bcf896abed&chksm=ebd87b7bdcaff26da481dca06b58a96c8f4162bccbb571296c7568b45d80af549df1c520a1a7&
进行对字符串扩展,正则扩展,数值扩展,函数扩展,对象扩展,数组扩展。 开发环境准备: 编辑器(VS Code, Atom,Sublime)或者IDE(Webstorm) 浏览器最新的Chrome 字符串的扩展: 模板字符串,部分新的方法,新的unicode表示和遍历方法: 部分新的字符串方法 padStart,padEnd,repeat,startsWith,endsWith,includes 字符串的扩展: Unicode和UTF-16是什么和他们的关系 用for-of console.log('1'); } if(str.includes('PD')) { console.log('2'); } } for-of遍历字符串 let str = 'abc'; // es6 unicode表示法: Unicode是一种标准,包括了字符串,编码方案等,它是为了解决传统的字符编码方案的局限而产生的,每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言,跨平台进行文本转换
// 报错 function f(a, ...b, c) { // ... } 严格模式 ES2016 做了一点修改,规定只要函数参数使用了默认值、解构赋值、或者扩展运算符,那么函数内部就不能显式设定为严格模式 function foo() {} foo.name // "foo" 这个属性早就被浏览器广泛支持,但是直到 ES6,才将其写入了标准。 需要注意的是,ES6 对这个属性的行为做出了一些修改。 如果将一个匿名函数赋值给一个变量,ES5 的name属性,会返回空字符串,而 ES6 的name属性会返回实际的函数名。 var f = function () {}; // ES5 f.name // "" // ES6 f.name // "f" 如果将一个具名函数赋值给一个变量,则 ES5 和 ES6 的name const bar = function baz() {}; // ES5 bar.name // "baz" // ES6 bar.name // "baz" 箭头函数 ES6 允许使用“箭头”(
1.扩展运算符 含义: 扩展运算符,三个点(...),将一个数组转为用逗号分隔的参数顺序。 例如[1,5,10,15].findIndex(function(value,index,arr){ return value > 9; }) 6.数组实例的fill()
一、属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法 let a=1; let b=2; let es5={a:a,b:b}; // 等同于 let es6={a,b}; 上面代码表明 ,ES6 允许在对象之中,直接写变量。 对象的扩展运算符(...)用于取出参数对象的所有可遍历属性,拷贝到当前对象之中 let z = { a: 3, b: 4 }; let n = { ...z }; n // { a: 3, b: 4 } 由于数组是特殊的对象,所以对象的扩展运算符也可以用于数组 let foo = { ... ['a', 'b', 'c'] }; foo // {0: "a", 1: "b", 2: "c"} 如果扩展运算符后面是字符串,它会自动转成一个类似数组的对象 {...'
一、函数参数的默认值 1、基本用法 ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面。 f(y = x) { let x = 2; console.log(y); } f() // ReferenceError: x is not defined 二、rest 参数 ES6 values) { let sum = 0; for (var a of values) { sum += a; } return sum; } add(1, 2, 3) // 6 三、箭头函数 1、基本用法 ES6 允许使用“箭头”(=>)定义函数。
延续之前的关于ES6的学习内容整理,该篇主要是整理ES6中关于对象的扩展,希望对大家有帮助。之前已经整理了ES6--字符串扩展和ES6--函数扩展,大家有兴趣可以移步了解。 setItem: setItem, clear: clear } 属性表达式 javascript中定义对象属性,最常见的方式如下: let obj = {} obj.iseditable = true ES6中允许用表达式作为对象的属性 = -0 //true NaN === NaN // false Object.is(+0, -0) // false Object.is(NaN, NaN) // true ES5可以通过如下方法扩展 只字符串化可枚举的属性 Object.assign(): 忽略enumerable为false的属性,只拷贝可枚举的属性 这四个操作之中,前三个是 ES5 就有的,最后一个Object.assign()是 ES6 另外,ES6 规定,所有 Class 的原型的方法都是不可枚举的。
一、对象的扩展对象(object)是 JavaScript 最重要的数据结构。ES6 对它进行了重大升级属性的简洁表示法ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。 ES6 允许字面量定义对象时,用方法二(表达式)作为对象的属性名,即把表达式放在方括号内。 对象的扩展运算符《数组的扩展》一章中,已经介绍过扩展运算符(...)。ES2018 将这个运算符引入了对象。 ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题。Object.is就是部署这个算法的新方法。
) 常见用途(3) 克隆对象 function clone (origin) { return Object.assign({},origin); } 6. for...in , Object.keys(), JSON.stringify(), Object.assign(); ES6一共有5种方法可以遍历对象的属性 (1) for key,value] of entries(obj)){ console.log([key,value]); // ['a',1],['b',2],['c',3] } 11.对象的扩展运算 let {x,y,...z} = {x:1,y:2,a:3,b:4}; x // 1 y // 2 z // {a:3,b:4} 扩展运算 扩展运算符
一、新增二进制和八进制的表示 ES6 提供了二进制和八进制数值的新写法,分别用前缀 0b/0B 和 0o/0O表示。 Number.isFinite() 和 Number.isNaN() 与传统的全局方法 isFinite()和 isNaN()的区别在于,传统方法先调用 Number()将非数值的值转为数值,再进行判断; 而 ES6 NaN") // true Number.isNaN("NaN") // false 三、新增 Number.parseInt() 和 Number.parseFloat() ES6 ES6 引入了 Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER 这两个常量,用来表示这个范围的上下限。 Number.MAX_SAFE_INTEGER) // true Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1) // false 六、新增 Math 对象的扩展
最近因为参与小程序的开发,本身就支持ES6的语法,所以也是对ES6一次不错的实践机会,接下去会逐一的将学习过程中涉及的常用语法和注意事项罗列出来,加深印象。 函数参数默认值 ES6之前,不能直接给函数参数指定默认值,只能用变通的方法,例如: function log(x, y) { y = y || 'word'; console.log(x, y) ES6允许为函数的参数设置默认值,直接写在参数定义后面,例如: function foo(x, y = 'word') { console.log(x, y); } log('hello'); / 可扩展性强,调用函数方哪怕不传这个参数值,也不会影响函数的执行。 { let sum = 0; for(let val for values) { sum += val; } return sum } add(1, 2, 3); // 6
6. every:数组中所有满足条件,返回true。 7. reduce:累加执行,具体参数可以参照MDN。 8. for in (不建议使用)。 2. ES6对于数组方法的扩展。 1. for of:迭代Array,因为Array内置了[Symbol.iterator]()所以可迭代。 6. Array.prototype.findIndex:找到符合条件的数组元素索引。 7. arr.entries()) { console.log(index, item) } // Array.from() // [1,1,1,1,1] ES 5用法 let arr = Array(6) .join(' ').split('').map(item => 1) // ES 6 Array.from({ length: 5 }, function () { return 1 })
2': 'c', length: 3 }; // ES5 的写法 var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c'] // ES6 的写法 let arr2 = Array.from(arrayLike); // ['a', 'b', 'c'] 扩展运算符(...)也可以将某些数据结构转为数组 // arguments 对象 function [1, 5, 10, 15].findIndex(function(value, index, arr) { return value > 9; }) // 2 6、fill() 使用给定值,填充一个数组
今天我们继续完善这个富文本显示的功能,比如文本链接解析、文本标题、指定文字加粗、斜体 等。本文会用到一些正则表达式的知识,本系列重点不是正则,不会做过多解释。如果看不懂,可以自己去补补。 ? 以下是 Flutter 文本解读 系列的其他文章: 《Flutter 文本解读 1 | 从源码认识 Text 组件》 《Flutter 文本解读 2 | Text 是如何画出来的》 《Flutter 文本解读 3 | Text 组件使用介绍 》 《Flutter 文本解读 4 | TextStyle 文字样式解读 》 《Flutter 文本解读 5 | RichText 富文本的使用 (上)》 ---- 一 、文本链接的处理 1.链接匹配的正则 通过 \[.*? 本文就到这里,下一篇来看一下,在 Flutter 中如何实现一个代码高亮显示的富文本。
一、ES6 模板字符串 传统的 JavaScript 输出模板通常是这样写的: let firstName = 'Will'; let lastName = 'Smith'; let name = 'My firstName is:' + firstName + ',my lastName is:'+ lastName; 这种写法很不方便,所以 ES6 引入了模板字符串: let firstName = 'na'.repeat('na') // "" 'na'.repeat('3') // "nanana" 三、ES6 关于 Unicode 的表示 ES6 加强了对 Unicode 的支持,允许采用 \ ES6 对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符。 "\u{20BB7}" // "?" "\u{41}\u{42}\u{43}" // "ABC" 四、ES6字符串的遍历器接口 ES6 为字符串添加了遍历器接口,使得字符串可以被 for...of 循环遍历。