关闭

js 中实现getter和setter函数方法,及运算符的特殊用法

时间: 2018-12-27阅读: 1521标签: 函数

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');
}

来自:https://www.cnblogs.com/cyk2018/archive/2018/12/26/10181527.html


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/1707

高阶函数

filter用于对数组进行过滤。 它创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。注意:filter()不会对空数组进行检测、不会改变原始数组

JS中的setTimeout()函数

setTimeout() 方法用于在指定的毫秒数后调用函数或执行表达式。返回一个 ID(数字),可以将这个ID传递给 clearTimeout() 来取消执行。第三个及之后的参数是setTimeout()函数的可选参数,是作为参数传给 setTimeout() 方法里面的匿名函数或者调用的函数

为什么要去学习函数式编程

函数式编程比较复杂比较枯燥,但是为了了解react和redux,如果没有函数式编程的理论铺垫,很难学好他们。函数式编程在js当中是一个比较抽象的概念

js实现KB、MB、GB、TB单位转换

当函数参数值小于等于1000时,参数除以1000,即可得到最小单位kb,赋值给变量_integer;当_integer值大于1000时,kb值除以1000,即可得到mb,赋值给变量_integer;以此类推。

浅析js的工厂函数、构造函数

首先,说下工厂函数。顾名思义,就好比一个工厂一样,可以批量制造某种类型的东西。其实说白了就是封装了个方法减少重复工作,相信稍微有点码龄的人都懂。上代码:

javascript构造函数

提起构造函数,我们需要从JS的创建对象开始,JS的创建对象有两种方式,一种是对象字面量法(把一个对象的属性和方法一一罗列出来),对象字面量法有一个明显的不足在于它不适合批量的或者是构建大量的类似或者重复的对象

Js中函数式编程

最近和做技术的朋友聊天的时候,发现自己居然不能将函数式编程思想讲清楚,于是做一次复习,常常都能听到这么一句话:在 JavaScript 中,函数是“一等公民”,这句话到底意味着什么?

在vue项目中,如何定义全局变量/全局函数?

如题,在项目中,经常有些函数和变量是需要复用,比如说网站服务器地址,从后台拿到的:用户的登录token,用户的地址信息等,这时候就需要设置一波全局变量和全局函数

Generator函数

Generator 函数有多种理解角度。语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。

js中的toString和valueOf

基本上,所有JS数据类型都拥有valueOf和toString这两个方法,null除外。它们俩解决javascript值运算与显示的问题。所有对象继承了两个转换方法:每个JavaScript固有对象的 valueOf 方法定义不同。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!