- 目前世界上使用最广泛的 JS 版本(IE 6 支持的版本)是
- 第三版
-
一般来说,要把程序加载到内存才能运行
-
双击 Chrome 快捷方式,会启动一个 Chrome 进程,这个进程会启动其他子进程
-
线程不是进程,线程是一种比进程更轻量的概念
-
JS 只能单线程执行
-
JS 引擎的功能有
- 编译 JS 代码为字节码或者机器码
- 优化字节码或者机器码
- 执行字节码或者机器码
- 垃圾回收
- 内存中,Stack 和 Heap 的区别是
- Stack 必须顺序存储数据,让数据一个接一个排列
- Heap 随机存储数据
- Object 和 object 的区别是什么?
- Object 是一个全局函数,可以用来生成对象,var obj = new Object() ,可以简写成 var obj = {};而 object 什么也不是,除非我声明一个 var object
- 关于原型(共有属性)
- Object.prototype 保存了一个对象的地址,这个对象包含了所有普通对象的共有属性,叫做对象的原型
- Array.prototype 保存了一个对象的地址,这个对象包含了是所有数组的共有属性,叫做数组的原型
- Function.prototype 保存了一个对象的地址,这个对象包含了是所有函数的共有属性,叫做函数的原型
- 每个对象都有一个隐藏属性,用来保存其原型的地址,这个隐藏属性的名字叫做 proto
10. 关于「原型」
- x 的原型」等价于「x.proto 所指的对象」 ,有时为了方便,我们可以认为「x 的原型」等价于「x.proto 」
- 一个对象的原型指的是这个对象与其他同类对象的公有属性的集合,比如 obj1 和 ob2 同时拥有 toString / valueOf,那么 toString / valueOf 等属性组成的对象,就是 obj1 和 obj2 的原型,这个原型的地址一般储存在构造函数的 prototype 里
- x.__proto__和 Object.prototype 存储着同一个对象的地址,这个对象就是 x 的原型
- 每个对象都有原型,但除了「根对象 Object.prototype」比较特殊,Object.prototype 这个对象的原型为空 null
- JS 7大数据类型的有
- undefined
- null
- bool
- string
- object
- symbol
- number
- 关于 UTF-8 和 Unicod
- UTF-8 是 Unicode 一种存储规则,也叫字符编码规则。
- js 的number
- JS 的 number 全都是以小数(浮点数)的形式存储的,没有单独的整数
- 字符串
\n\t\r的长度是 3 - 1 && 2 的值是 2;0 && 2 的值是 0
- 只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
- 只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
参考链接JavaScript中alert(1&&2)为2的原因_qingliuFu的博客-CSDN博客
16。 五个 falsy 值是 - 0
- NaN
- undefined
- null
- ''
- 如何将一个数字 n,转为一个字符串
- String(n)
- n + ''
- '' + n
- JS 构造对象目前有两种方式,一种是用构造函数+prototype,一种是用 class
- 两者方式 JS 都支持,JS 是一门包容的语言,提供了多种表达形式,两者方式都能表达程序员的思想。
- 构造函数+prototype 是先提供的,class 是后提供的,说明 构造函数+prototype 是 JS
- 关于 prototype 属性
- 所有函数一出生就有一个 prototype 属性(除了箭头函数)
- 所有 prototype 一出生就有一个 constructor 属性
- 所有 constructor 属性一出生就保存了对应的函数的地址
- 如果一个函数不是构造函数,它依然拥有 prototype 属性,只不过这个属性暂时没什么用
- 如果一个对象不是函数,那么这个对象一般来说没有 prototype 属性,但这个对象一般一定会有 proto 属性
- new X() 操作其实自动帮我们做了很多事情\
- 自动创建一个空对象
- 自动将该空对象的原型指向 X.prototype(即将 X.prototype 保存的地址复制到空对象.proto 里)
- 自动将空对象作为 this 来运行构造函数
- 自动 return this
- 类型 和 类 的描述
- 类型是对 JS 中数据的分类
- 类是对 JS 中对象的分类
- JS 中的类型有:数字、字符串、布尔、符号Symbol、null、undefined、对象
- JS 中的类有:对象 Object、数组 Array、函数 Function 等
- 关于 Object.prototype的描述
- Object.prototye 是「Object 构造出来的对象 obj」的原型,即 obj.proto === Object.prototype
- Object.proto 是 Object 的原型,由于 Object 是函数,而所有函数的原型都是 Function.prototype,所以 Object.proto === Function.prototype
- Object.prototye 不是 Object 的原型,Object.proto 才是 Object 的原型(还记着之前答过「x.原型 等价于 x.proto」吗,现在只不过是把 x 替换成 Object。很多人都搞不清楚 Object.proto 和 Object.prototype 哪一个才是 Object 的原型,其实只要记住公式就好办了)
- 所有「函数对象」的「构造函数」都是 Function
- function fn(){}请问 fn 是由谁构造的---Function 25.关于调用栈的描述
- JS 引擎进入一个函数之前,需要把当时的环境保存进调用栈
- JS 引擎退出一个函数之前,需要把环境从调用栈里弹出,然后回到这个弹出的环境
- 调用栈的长度是有限的 26.关于 arguments的描述
- 每次调用函数时,都会对应产生一个 arguments
- arguments 是一个包含所有普通参数的伪数组
- 我们应该尽量不对 arguments 内的元素进行修改,修改 arguments 会让代码变得令人疑惑
- 关于 this的描述
- 在 new fn() 调用中,fn 里的 this 指向新生成的对象,这是 new 决定的
- 在 fn() 调用中, this 默认指向 window,这是浏览器决定的
- 在 obj.fn() 调用中, this 默认指向 obj,这是 JS 的隐式传 this
- 在 fn.call(xxx) 调用中,this 就是 xxx,这是开发者通过 call 显式指定的 this
- 在 arrow() 调用中,arrow 里面的 this 就是 arrow 外面的 this,因为箭头函数里面没有自己的 this
- 在 arrow.call(xxx) 调用中,arrow 里面的 this 还是 arrow 外面的 this,因为箭头函数里面没有自己的 this