js 中实现getter和setter函数方法,及运算符的特…
2018-12-27 07:42:24来源:博客园 阅读 ()
1.getter与setter
javascript的大部分东西是简化了的。这里我们假设有一个student对象,并且我们用student.age来访问它的age属性,如果此时定义了age属性,我们就会得到它
的值,如果没有,我们就会得到undefined。
但是我们也可以编写自定义的getter和setter函数来获取我们的想要的东西,而不是直接返回对象的值,设置值的时候也是一样。
这样我们就可以实现更多复杂的获取和设置字段的功能,如虚拟字段,字段验证,副作用等,ES6中添加了更加方便的语法形式。
- getter简单说来就是一种获得属性值的方法,setter简单说来就是一种设置属性值的方法
- getter负责查询值,它不带任何参数,setter则负责设置键值,值是以参数的形式在内部传递。
//isNaN()
函数用来确定一个值是否为NaN
,即判断该值是否为一个非数字。
const student = { firstName: 'job', lastName: 'jark', get fullName() { return this.firstName + ' ' + this.lastName; }, set age(value) { if (isNaN(value)) throw Error("It has been a bumber"); this_age = Number(value) }, get age() { return this_age } }; console.log(student.firstName); student.firstName = 'jerry'; console.log(student.fullName); student.age = '21'; console.log(student.age); student.age = 'error';
2.运算符
1.逗号运算符
通常逗号运算符用于在一行编写多个语句,或者在for循环中使用,比如
var a,b,n = 6; for(a = 0,b = 0;a <= n&&b<=n;a++,b++) { }
function calculate() { return a++,console.log(a),a; }
我们还可以用它在一行中编写有逗号分隔的多个表达式,,并返回最后一个表达式的结果。
//通过var定义的变量,作用域是整个封闭函数,是全域的 。通过let定义的变量,作用域是在块级或是子块中。
let result = number1,number2,...,numberN;
2.!!运算符
他的效果与使用两次的js否定运算符的作用是一致的。!!是将任何表达式转化为布尔类型的表达式的相对较优的运算符。
同样的,如果表达式的返回值为真值,则返回true,否则则返回false。
!!null //returns false !!undefined //returns false !!false //returns false !!true //returns true !!"" //returns false !!"somestring" //returns true !!0 //returns false !!1 //returns true !![] //returns true !!{} //returns true
3.+运算符
+运算符能够快速的将字符串转化为数字,只需要在字符串前面加上+号即可,+运算符还适用于负数,八进制,十六进制和指数,可以将date或者Moment.js对象转化为时间戳。
//时间戳(timestamp),一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。
+ '3.11' //returns 3.11 + '-4' //returns -4 + '0xFF' //returns 255 + true //returns 1 + '123e-5' //returns 0.00123 + false //returns 0 + null //returns 0 + 'Infinity' //returns Infinity +'1,234' //returns Nan +dateObject //returns 1542975502981 +momentObject //returns 1542975502981
4.~运算符
位运算符一般使用的很少,当他与数字一起使用的时候,比如~N => -(N+1),这个式子仅当 N == -1 的时候结果为0。
我们可以在indexof(..)函数前面加一个~来进行布尔检查,检查一个项是否存在于Array或者string中。
let userName = 'break jerry' if(~userName.indexOf("break")) { console.log('access denied'); }else { console.log('access granted'); }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- js防止表单重复提交实现代码 2020-03-29
- 基于JQuery的多标签实现代码 2020-03-29
- js实现翻页后保持checkbox选中状态的实现方法 2020-03-25
- NiftyCube实现圆角边框的方法 2020-03-20
- JS实现标签页切换效果 2020-03-12
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash