JS基础知识(未完)
学习笔记,知识点来源于掘金小册-yck-前端面试之道
1.原始类型(6种)
原始类型储存的都是值
number
boolean
string
null
undefined
symbol
null不是对象类型。虽然 typeof null 会输出 object,但是这只是 JS 存在的一个悠久 Bug。在 JS 的最初版本中使用的是 32 位系统,为了性能考虑使用低位存储变量的类型信息,000 开头代表是对象,然而 null 表示为全零,所以将它错误的判断为 object 。虽然现在的内部类型判断代码已经改变了,但是这个 Bug 却一直流传下来。
2.对象类型
对象类型储存的是地址;当创建一个对象类型的时候,计算机会在内存中帮我们开辟一个空间来存放值,对象类型储存的就是这个空间的地址
const a = [];
/*
对于常量 a 来说,假设内存地址为 #001,那么在地址 #001 的位置存放了值 [],常量 a 存放了地址 #001
*/
const b = a;
//b存放的也是地址#001,a,b指向同一片内存,互相影响
函数参数是对象会发生什么问题?
function test(person) { // person参数是p1的副本,和p1指向同一内存
person.age = 26 //这里修改person,p1也变了
person = { // 这里给person一个新地址,person与p1没关系了
name: 'yyy',
age: 30
}
return person
}
const p1 = {
name: 'yck',
age: 25
}
const p2 = test(p1)
console.log(p1) // {name:'yck',age:26}
console.log(p2) // {name:'yyy',age:30}
3.typeof vs instanceof
3.1typeof能否正确判断数据类型?
typeof 1 // 'number'
typeof '1' // 'string'
typeof undefined // 'undefined'
typeof true // 'boolean'
typeof Symbol() // 'symbol'
typeof null // object
typeof [] // 'object'
typeof {} // 'object'
typeof console.log // 'function'
对于原始类型来说,除了typeof null,其他都能正确判断
对于对象类型来说,除了函数,其他都会显示object
所以typeof不能正确判断数据类型
3.2 instanceof 能正确判断对象的原理是什么?
原型链
const Person = function() {}
const p1 = new Person()
p1 instanceof Person // true
var str = 'hello world' // 原始类型
str instanceof String // false
var str1 = new String('hello world') // 经过了原型链,对象类型
str1 instanceof String // true
4.类型转换
js中类型转换只有三种情况:
转成布尔值
转成数字
转成字符串

5.this指向
function foo() {
console.log(this.a)
}
let a = 1
foo() // 1.指向window
const obj = {
a: 2,
foo: foo
}
obj.foo() // 2.指向调用者
const c = new foo() // 3. this指向c,不会被任何其他方式改变
箭头函数的this指向函数定义时的环境(或者说箭头函数没有this,取决于包裹箭头函数的第一个普通函数的this)

call,apply是立即调用;bind是绑定,并不会立刻执行,只会返回一个新函数,用于稍后调用
JS基础知识(未完)的更多相关文章
- [JS复习] JS 基础知识
项目结尾,空闲时间,又把<JS 基础知识> 这本书过了一遍,温故知新后,很多知其然不知其所以然的内容 豁然开朗. [1. 用于范围的标签] display :inline or bloc ...
- HTML+CSS+JS基础知识
HTML+CSS+JS基础知识 目录 对HTML+CSS+JS的理解 基础知识 对HTML+CSS+JS的理解 基础知识 插入样式表的三种方式 外部样式表:<link rel="sty ...
- Node.js基础知识
Node.js入门 Node.js Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始.比较独特的是,Node.js会假设在POSIX环境下运行 ...
- 网站开发进阶(十五)JS基础知识充电站
JS基础知识充电站 1.javascript alert弹出对话框时确定和取消两个按钮返回值? 用的不是alert对话框,是confirm confirm(str); 参数str:你要说的话或问题: ...
- NodeJs>------->>第三章:Node.js基础知识
第三章:Node.js基础知识 一:Node.js中的控制台 1:console.log.console.info 方法 console.log(" node app1.js 1> ...
- JS基础知识笔记
2020-04-15 JS基础知识笔记 // new Boolean()传入的值与if判断一样 var test=new Boolean(); console.log(test); // false ...
- js基础知识温习:Javascript中如何模拟私有方法
本文涉及的主题虽然很基础,在很多人眼里属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题.这里会涉及到对象属性的封装.原型.构造函数.闭包以及立即执行表达式等知识. 公有方法 公有方法 ...
- js基础知识--BOM
之前说过,在js的 运行环境为浏览器时,js就主要有三部分组成: ECMAScript核心语法.BOM.DOM.今天就和大家详细说一下BOM的一些基础知识. BOM BOM通常被称为浏览器对象模型,主 ...
- JS基础知识总结
js基础知识点总结 如何在一个网站或者一个页面,去书写你的js代码:1.js的分层(功能):jquery(tool) 组件(ui) 应用(app),mvc(backboneJs)2.js的规划() ...
随机推荐
- 原生js实例对象方法
Array中的方法 ☞ toString() // 把数组转换为字符串,使用逗号分隔☞ valueOf() // 返回数组对象本身 ☞ 栈方法(先进后出)ary.push() // 该方法有一个返回值 ...
- Add In 简介(主要翻译于ESRI官方文档)
为ArcGIS桌面端建立Add In插件 平时以工作为主,有空时翻译一些文档,顺便练习英文,这个是因为用Add In来学习一下. 主要包括: 关于Add In 什么时候使用Add In Python ...
- 微信分享大图遇到的问题(Android)
起因: 要做一个微信图片分享的功能,但是对于大图会如下问题: 当时没有仔细查看错误日志,单纯的以为是图片太大的问题. 分享图片代码: public void WXsharePic(String tra ...
- 虹软免费人脸识别SDK注册指南
成为开发者三步完成账号的基本注册与认证:STEP1:点击注册虹软AI开放平台右上角注册选项,完成注册流程.STEP2:首次使用,登录后进入开发者中心,点击账号管理完成企业或者个人认证,若未进行实名认证 ...
- 【English】三、以o结尾单词变复数
一.以O结尾的词,许多加es构成复数,特别是一些常用词如: potatoes 土豆 tomatoes 西红柿 echoes 回声 tornadoes 龙卷风 torpedoes ...
- django xadmin 1不在可用的选项中
报错:1不在可用的选项中 解决办法: 对CharField的choices的选项, gender = models.CharField(max_length=, choices=((, , " ...
- 抓包工具Charles安装时需要注意的地方
最新接到一个任务,需要为app端的升级提供新的接口.以前没有搞过这个,其实搞完之后也就那样!其中有很重要的一点,就是需要用到抓包工具,进行联调测试,观看app端的数据情况. 抓包工具最常用的两个:fi ...
- Win7/Win8.1升级Win10后屏幕一直闪烁怎么办?
有些用户在把Win7/Win8.1升级到Win10正式版后,发现屏幕一直不停闪烁,以至于无法正常使用.出现这种情况的原因可能有很多,微软社区的论坛审阅人Alex_Shen给出了一种解决方案:进入安全模 ...
- OpenGL实例:几何变换
OpenGL实例:几何变换 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 更多请查看:计算机图形学 1. 平移 #include <GL/glu ...
- Andriod studio 打包aar
因为项目不同,有些公用库而且还是c++的,还有一些带资源的,简单的复制遇到库升级又是一轮配置,编译成aar则解决这些麻烦. 但是默认andriod studio的make moudle只生成debug ...