美文网首页
【js基础】数据类型、类与构造器

【js基础】数据类型、类与构造器

作者: SophieRabbit | 来源:发表于2020-07-15 11:32 被阅读0次

1. 字符串最大长度: 2的53次方-1。但这指的并不是字符串长度,而是字符串的UTF16编码的长度。(U+0000 - U+FFFF范围)

2. Number的双精度浮点数规则:有效整数范围是-0x1fffffffffffffff 至 0x1fffffffffffffff

单精度浮点数(float)与双精度浮点数(double)的区别如下:

(1)在内存中占有的字节数不同

单精度浮点数在机内占4个字节

双精度浮点数在机内占8个字节

(2)有效数字位数不同

单精度浮点数有效数字7位

双精度浮点数有效数字16位

(3)所能表示数的范围不同

单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38

双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308

(4)在程序中处理速度不同

一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快。

根据浮点数定义,非整数的Number无法用==或者===来比较,比如 :

0.1 + 0.2 === 0.3   // false

正确的比较方法应该是这样:

Math.abs( 0.1 + 0.2 - 0.3 <= Number.EPSILON )     //Number.EPSILON:最小精度值

NaN:NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。

3. Symbol: 一切非字符串的对象key的集合,整个对象系统被用Symbol重塑。详细见symbol的文章。

4. JS中对对象的定义是“属性的集合”。属性包括数据属性和访问器属性。均为KEY-VALUE结构,key可以是字符串或者symbol类型。

Number、String和Boolean三个构造器是两用的,和new搭配产生对象,直接调用时为强制类型转换。

Symbol函数比较特殊,直接调用会报错,但仍然是Symbol对象的构造器。

装箱操作:每一种基本类型都有对应的类,所谓装箱转换就是把基本类型转换为对应的临时对象。装箱机制会频繁产生临时对象,再一些对性能要求较高的场景下,因尽量避免基本类型做装箱转换。

var sbObj = Object(Symbol('a'));

console.log(typeof sbObj);  // object

console.log(sbObj instanceof Symbol);  // true

console.log(sbObj.constructor === Symbol);  // true

拆箱转换:ToPrimitive函数,对象类型到基本类型的转换。

JS中对象的独有特色: 高度动态性,运行时可以为对象添加状态和行为的能力。

通常程序语言中的对象有下列几个特性:

对象具有唯一标识性,看起来完全相同的对象,其实不相等。({a:1} !== {a:1})

对象是有状态的,同一对象可能处于不同状态下。

对象有行为,对象的状态可能因为行为而变化。

在js中,对象的状态和行为都被抽象为属性了。

var o = {

    d: 1,   // 状态

    f() { console.log(this.d) }   // 行为

}

为了提高抽象能力,JS的属性被设计成了数据属性和访问器属性(getter/setter)

Object.defineProperty定义属性,getOwnPropertyDescriptor来查看属性。

5. JS中的class:

class Rectangle {

    constructor(h, w) {

        this.h = h;

        this.w = w;

    }

    get area() {   //Getter

        return this.calcArea();

    }

    calcArea() {  //Method

        return this.h * this.w;

    }

}

js中的class用extend来实现继承;不自动调用父类构造函数,不自动设置constructor。更少坑的设计。

6.构造器

function f() {

    return 1;

}

var v = f(); // 把f作为函数调用

var o = new f(); //把f作为构造器调用

答案看: https://blog.csdn.net/scaped/article/details/80036109

相关文章

  • 【js基础】数据类型、类与构造器

    1. 字符串最大长度: 2的53次方-1。但这指的并不是字符串长度,而是字符串的UTF16编码的长度。(U+000...

  • js数据类型与类型判断

    一、数据类型 js的数据类型分为两类 基础数据类型与引用数据类 基础数据类型 undefined、null、num...

  • JS对象和继承

    JS对象和继承 JS是个无类的语言,因此对于对象构造器(类)和对象的继承就值得我们研究了。本文讲述JS中构造器的表...

  • 日常

    vue.js 基础: Vue构造器:Vue.extend(options) 是vue构造器的扩展,调用Vue.ex...

  • ES6学习笔记(一)class类

    一:ES5中的仿类 JS在ES5及更早版本中都不存在类,与类最接近的是:创建一个构造器,然后将方法指派到该构造器的...

  • javaSE_day13_泛型

    泛型:参数化数据类型;类,方法 ,构造器,接口 好处:编译器 进行类型检查; 泛型类:类名 <类型参数> 类型参数...

  • 2、JS基础数据类型

    上篇我们学习了如何使用浏览器控制台,以便快速发现问题。本篇继续学习JS基础数据类型,看看JS为我们提供了哪些数据类...

  • 类主构造器 主构造器的定义与类的定义交织在一直,将构造器参数直接放在类名称之后,如下代码: 主构造器还可以使用默认...

  • 【Dart】Dart类与对象

    类与对象 类 继承 抽象类 接口 混入 泛型 枚举类类-简介 构造器 (构造函数) 默认构造函数与类同名的函数,在...

  • JS 类型隐式转换

    1、js数据类型 js中有7种数据类型,可以分为两类:原始类型、对象类型: 基础类型(原始值): Undefine...

网友评论

      本文标题:【js基础】数据类型、类与构造器

      本文链接:https://www.haomeiwen.com/subject/nohltktx.html