JavaScript

一、

JavaScript 数据类型

JavaScript 是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。也可以使用同一个变量保存不同类型的数据。

原始值:除 Object 以外的所有类型都是不可变的(值本身无法被改变)。

例如,与 C 语言不同,JavaScript 中字符串是不可变的(译注:如,JavaScript 中对字符串的操作一定返回了一个新字符串,原始字符串并没有被改变)。我们称这些类型的值为“原始值”。

(1)分类:

  • 7 种原始类型,使用 typeof 运算符检查:

        Undefined,Null,Boolean,Number,String,BigInt,Symbol

  • 1种引用类型,Object(对象、数组、函数)

(2)区别:

1.存储位置不同

  • 原始数据类型:直接存储在栈(stack)中的简单数据段,占据空间小,大小固定,属于被频繁使用的数据,所以存储在栈中;
  • 引用数据类型:存储在堆(heap)中的对象,占据空间大,大小不固定,如果存储在栈中,将会影响程序运行的性能。引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址,当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后,从堆中获得实体。

js中的栈内存、堆内存

2.传值方式不同

  • 基本数据类型:按值传递
  • 不可变(immutable)性质:基本类型是不可变的(immutable),只有对象是可变的(mutable). 有时我们会尝试“改变”字符串的内容,但在JS中,任何看似对string值的"修改"操作,实际都是创建新的string值。任何方法都无法改变一个基本类型的值
  • 引用类型:按引用传递
  • 引用类型的值是可变的:引用类型的值是同时保存在栈内存和堆内存中的对象。javascript和其他语言不同,其不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间,那我们操作啥呢? 实际上,是操作对象的引用,引用类型的值是按引用访问的。

3.两种数据类型在实参和形参中的区别

  • 首先要明白什么实参什么是形参。
  • 实参:可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。
  • 形参:全称为“形式参数”,是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。
  • 将 num作为实参传入方法 addNum是 param作为形参接受并在方法体内使用,且num在全局中没用改变。但当实参为引用类型时,在方法体内改变形参,将同时改变实参。

二、

原型 ?

js中万物皆对象。
__proto__是每个对象都有的属性,prototype是函数对象特有的属性。
__proto__指向对象构造函数的prototype,prototype指向原型对象。
每个原型对象,都包含一个指针constructor指向构造函数

原型链 ?

当访问一个对象的某个属性的时候,会先在这个对象的本身属性上找,如果没有找到,会去它的__proto__上找,即它的构造函数的prototype,如果还没找到,会在构造函数的prototype的__proto__上找。这样一层层向上查找就会形成一个链式结构,称为原型链。

三、

js的几种继承方式 ?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值