从me.name = 'forceddd' 开始

2021-12-15
阅读 5 分钟
2.8k
像 me.name = 'forceddd' 的赋值语句在JavaScript中是随处可见的。但是,我们真的了解这句代码做了什么事情吗?是创建了一个新属性吗?是修改了原有属性的值吗?这次操作是成功还是失败了呢?这只是一行简单的赋值语句,但如果我们认真思考的话,就会发现这种细节其实也没有那么简单。

了解JavaScript中的类型转换

2021-10-15
阅读 6 分钟
3.7k
类型转换的定义很容易理解,就是值从一个类型转换为另一个类型,比如说从String类型转换为Number类型,'42'→42。但是,如果我们对JS中的类型转换规则了解的并不足够的话,我们就会遇到很多令人迷惑的问题,就好像如果没有学习物理和化学,生活中处处都是魔法一样。

认识JS中的Class

2021-09-24
阅读 5 分钟
2.6k
JavaScript 和面向类的语言不同,它并没有类来作为对象的抽象模式。JavaScript 中只有对象,而并没有真正的类。JS只是利用了函数的一种特殊特性——所有的函数默认都会拥有一个名为 prototype 的公有并且不可枚举的属性,它会指向另一个对象,来模拟类的行为。

了解JavaScript中的伪数组

2021-05-26
阅读 2 分钟
3.3k
JavaScript中存在有一种类数组,或者说伪数组。经常见到的伪数组有函数的arguments对象、dom.querySelectorAll等获取的NodeList类(NodeList本身具有forEach方法)等。

JavaScript中的eval函数

2021-05-20
阅读 2 分钟
3.5k
1. eval函数有什么用?调用eval函数,可以将其参数作为javascript程序进行解释。换句话说,eval可以把它的参数当做代码来执行。例子 {代码...} 在这个例子中,eval将它的string参数var y=x作为一行代码执行了,在函数f内部声明了一个局部变量y。这和 {代码...} 的执行效果基本相同。2. 避免使用eval函数创建局部变量​ 允...

深拷贝和浅拷贝

2020-06-02
阅读 2 分钟
1.2k
操作拷贝之后的对象的某个属性会影响原始对象中的属性 这种叫做浅拷贝。浅拷贝不是直接赋值,浅拷贝新建了一个对象将原来对象的属性都一一复制过来,浅拷贝只复制了第一层,所以当属性是引用数据类型时,就会只复制了引用数据的地址。这样无论是原始对象还是拷贝之后的对象都是依据同一个地址使用该属性,如果一边进行了...

JavaScript中的常用继承

2020-06-01
阅读 3 分钟
1.5k
首先在Dog构造函数内部,通过强制改变Animal构造函数的this,实现继承Animal构造函数内部属性的目的,然后通过改变原型对象,继承Animal原型对象上的共享属性和方法。但是这种方式有一个缺点,就是Animal函数执行了两次。

组合模式和动态原型模式创建自定义对象

2020-06-01
阅读 1 分钟
968
组合模式是目前使用最广泛,认同度最高的一种自定义对象的模式。组合模式是将构造函数和原型继承相组合,使实例对象既可以共享相同的方法,自身的属性又不会互相影响。

深入挖掘原型链

2020-06-01
阅读 3 分钟
4.9k
如果想要深入理解原型链,首先需要明确知道什么是原型对象,什么是实例对象,以及原型对象,实例对象与构造函数三者之间的关系。首先,实例对象是指通过关键字new,由构造函数构造出的对象实例对象可以有多个,并且实例对象会继承它的原型对象上的所有属性。

简单认识闭包函数

2020-05-29
阅读 1 分钟
1.1k
闭包是一个函数,不过这个函数是声明在另外一个函数内部的,可以读取另外一个函数内部的变量。闭包其实非常常见,只不过可能我们很少意识到,这就是闭包。闭包最大的特点就是可以记住自己的诞生环境,无论在何处调用,访问的都是声明时作用域的变量,可以访问到父函数中的变量,比如:

深入理解this指向

2020-05-19
阅读 4 分钟
1.4k
在正式理解this指向之前,我们需要明确一点,this是在函数被调用执行时才确定绑定的。当函数执行时,会创建执行环境,此时确定this的指向。this的绑定和函数调用息息相关,函数的四种调用方式(函数独立调用模式、方法调用模式、构造调用模式、间接调用模式)也对应了this的四种绑定方式(默认绑定、隐式绑定、new绑定、...

JavaScript的声明提升

2020-05-16
阅读 2 分钟
1.5k
在JavaScript中,当出现var声明的变量或者function声明的函数时,会将该声明提到当前作用域的前面执行,这便是声明提升。值得注意的是,只是提升了声明操作,赋值还是在原来的位置进行。声明提升包括变量声明提升和函数声明提升。

如何理解JS中的作用域与执行环境

2020-05-14
阅读 3 分钟
879
词法作用域又被称为静态作用域。函数的词法作用域是由函数的声明位置决定的。函数一旦声明,他的词法作用域就确定了。一个函数的词法作用域包括这个函数的形参、函数内部声明的变量以及函数内部声明的函数。我们可以将“词法作用域”中的“词法”理解为声明的标识符。