JavaScript

简述

        JavaScript是一门弱类型语言,变量的数据类型取决于值的数据类型,每当值得数据类型改变,变量的数据类型也会跟着改变。js是一门单线程语言js会优先执行主线程任务,遇到异步请求或者是遇到宏任务,不会立即执行,而是放到任务栈中。js区分大小写。

数据类型

        共有9种数据类型:

        基本数据类型:number(数字),string(字符串),null(空对象),underfine(未定义),boolean(布尔),symbol(ES6中新引入,表示独一无二的值)

        引用数据类型:object(对象),array(数组),function(函数)

underfine继承null,underfine==null结果为true;

对象中的属性可以通过点语法来获取,obj.name;或者通过中括号(中括号中放变量)来获取obj['name']

深拷贝和浅拷贝:只存在于引用数据类型中,引用数据类型中,变量存放的是地址,地址指向值。所以如果直接用‘=’赋值,如果改变某个变量的值,那另一个变量的值也会改变。浅拷贝表示仅拷贝引用地址,深拷贝则克隆对象的值。

实现深拷贝的方法 :通过json对象实现深拷贝(JSON.stringify,JSON.parse);Object.assign();lodash库中深拷贝方法等等

类型判断

        typeof:判断数据类型

ps:对象、数组、null用typeof判断结构都为object。

比较运算符

        当字符串比较时,判断的是第一位的大小‘123123’<'5' 

对象

        对象中的三种强制类型转换:Boolean()、String()、Number()

转布尔类型:

数据类型转换为true的值转换为false的值
Booleantruefalse
String任何非空的字符串""(空字符串)
Number任何非零数字(包括无穷大)0和NaN
Object任何对象null
Undefinedundefined

原型对象

在Object的构造函数的原型对象中的属性和方法都可以被Object构造函数的实例所继承。

Object原型中的所具有的任何属性和方法也同样存在于其他对象中,任何对象继承自Object。

 

总结:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,实例都包含一个指向原型对象的内部指针。

对象的静态方法

Object.defineProperty(属性所在的对象,属性的名字,一个描述符对象)

                                           obj                       prop                {}(descriptor)

对象的数据属性特性:

[[Configurable]]

表示是否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性(属性直接定义在对象中,默认为true)。 当为false时,不能重新定义不能使用delete删除。

[[Enumerable]]

表示能否通过for-in循环返回属性。(属性直接定义在对象中,默认为true)

[[Writable]]

表示能否修改属性的值。(属性直接定义在对象中,默认为true)

[[Value]]

包含这个属性的数据值 name:jacky

若用Object.defineProperty()来定义一个属性时,上面三个属性默认为false。

读取属性的特性

Object.getOwnPropertyDescriptor()   

访问器属性的特性

通过Object.defineProperty()这个方法来定义

[[Get]]

在读取属性时调用的函数,默认值为undefined

[[Set]]

在写入属性时调用的函数,默认值为undefined

对象的序列化

对象序列化是指将对象的状态转换为字符串,也可以反序列化,将字符串还原为对象函数。

RegExp,Error对象,undefined值不能序列化和反序列化。

JSON.stringify(obj) 将对象序列化为JSON字符串,只能序列化对象可枚举的自有属性

JSON.parse(jsonStr) 反序列化

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值