随笔分类 - javascript
摘要:Object.freeze() 官方MDN对Object.freeze()的说明,如下: Object.freeze()方法可以冻结一个对象。 一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修
        阅读全文
                
摘要:为什么会有cookie和session 因为HTTP是无状态协议。 无状态的意思是:HTTP协议不具备保存之前发送过的请求或响应的功能。每次的请求是相互独立的,第n次的请求结果和第n-1次、第n+1次的请求结果不会互相影响。于是cookie和session就被用于解决HTTP无状态的问题。 会话(S
        阅读全文
                
摘要:for in遍历的是数组的索引(或对象的键名),而for of遍历的是数组元素值。 使用for in会遍历数组所有的可枚举属性,包括原型,例如上栗的原型方法method和name属性 。而for of遍历的只是数组内的元素,而不包括数组的原型属性method和索引name 。 Array.proto
        阅读全文
                
摘要:基本数据类型 number(特殊值:NaN、infinity) if("haha" == NaN) { // 条件是否成立? //注意 NaN != NaN 它和谁都不相等 } string boolean null(null == undefined,但是和其它值都不相等) undefined s
        阅读全文
                
摘要:使用 new 命令调用函数的解析过程如下: 当使用 new 命令调用函数时,先创建一个空对象,作为实例返回。 设置实例的原型,指向构造函数的 prototype 属性。 设置构造函数体内的 this 值,让它指向实例。 开始执行构造函数内部的代码。 如果构造函数内部有 return 语句,而且 re
        阅读全文
                
摘要:call和apply的应用场景: 判断数据类型: Object.prototype.toString用来判断类型再合适不过,借用它我们几乎可以判断所有类型的数据: function isType(data, type) { const typeObj = { '[object String]': '
        阅读全文
                
摘要:(function() { //匿名函数的执行环境具有全局性 所以这里的this指向全局环境 var root = this; console.log(this); var symbolPolyfill = function Symbol(description){ // Symbol 函数前不能使
        阅读全文
                
摘要:要搞懂JS继承,我们首先要理解原型链:每一个实例对象都有一个__proto__属性(隐式原型),在js内部用来查找原型链;每一个构造函数都有prototype属性(显式原型),用来显示修改对象的原型,实例.__proto__=构造函数.prototype=原型。原型链的特点就是:通过实例.__pro
        阅读全文
                
摘要:let _subscribe = function() { class Sub { constructor() { // 创建一个事件池,用来存储后期需要执行的方法 this.$pond = []; } //向事件池中追加方法(重复处理) add(func) { let flag = this.$p
        阅读全文
                
摘要:首先我们要知道一点是: 在一个作用域中,函数提升优先级比变量提升要高,且不会被变量声明覆盖,但是会被变量赋值覆盖。 闭包 什么是闭包? 闭包是指有权访问另一个函数作用域中的变量的函数。 如何产生闭包? 当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时, 就产生了闭包 functi
        阅读全文
                
摘要:浏览器线程 js运作在浏览器中,是单线程的,即js代码始终在一个线程上执行,这个线程称为js引擎线程。 但浏览器是多线程的,除了js引擎线程,它还有: UI渲染线程 浏览器事件触发线程 http请求线程 EventLoop轮询的处理线程 …….. 这些线程的作用 js线程用于执行js任务 UI线程用
        阅读全文
                
摘要:关于原型的一些理解 函数的prototype属性 每个函数都有一个prototype属性,即显式原型(属性), 它默认指向一个Object空对象(即称为: 原型对象) 原型对象中有一个属性constructor, 它指向函数对象 原型对象还有一个__proto__属性,这是实例对象都有的属性,可称为
        阅读全文
                
摘要:promise的几个关键问题 如何改变 promise 的状态? (1) resolve(value): 如果当前是 pending 就会变为 resolved (2) reject(reason): 如果当前是 pending 就会变为 rejected (3) 抛出异常: 如果当前是 pendi
        阅读全文
                
摘要:详细的版本在https://my.oschina.net/u/3970421/blog/2993575 由于原文已经够详细了,在这里只是概括一些内容而已。 1.迭代器和生成器的引入 其实就是为了方便循环遍历。 (1)for循环 var colors = ["red", "green", "blue"
        阅读全文
                
摘要:1.初识原型 每个函数都有一个 prototype 属性,通过new构造函数,每一个js对象(null除外)在创建的时候就会关联另一个对象(就是我们所说的原型),每一个对象都会从原型"继承"属性(因为每个对象至少会有一个原型object)。 每一个js对象(除了 null )都具有的一个属性,叫**
        阅读全文
                
摘要:this的一般指向 1.指向window对象 (1)全局环境 全局环境下this就是window对象的引用 注意:使用严格模式时在全局函数内this为undefined console.log(this == window); //true (2)对象里的普通方法 show属于obj对象的方法,因此
        阅读全文
                
摘要:symbol的定义 symbol(符号)是es6新增的数据类型,符号是原始值,且符号实例是唯一、不可变的。符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。 一般情况下,重复的属性,后面的会把前面的覆盖掉 let grade = { lisi: {js:100,css:89}, lis
        阅读全文
                
摘要:promise的链式调用 每次then都是对上一个promise进行处理。 如下例,第一个then是对p1的期约进入“允许“状态时执行,而如果没有提供处理程序,默认情况下会按照“兑现“ 状态执行(如第二个then) let p1 = new Promise((resolve, reject) => 
        阅读全文
                

浙公网安备 33010602011771号