JS原型、原型链、继承、new运算符、Object.create
这篇文章可能较长,因为想要讲清楚JS原型和原型链,不得不讲讲原型和原型链产生的历史因素,他们到底是为什么而设计出来的?如果你希望对原型和原型链有比较深刻理解而不是每一次看完一篇文章下次遇到又忘了的话,请耐心一些听我细细道来。 文章中历史因素部分大多来源阮大神的博客
历史因素JS诞生之初,是因为网景公司需要一种脚本语言,使得用户可以与网页互动。1994年当时最新发布的浏览器Navigator0.9只能用来浏览,不能用来交互,那么到底采用什么语言呢,当时网景公司有两个选择,一个是采用现有的语言,比如Perl、Python、Tcl、Scheme等等,允许它们直接嵌入网页;另一个是发明一种全新的语言。就在这时,1995年,Sun公司将Oak语言改名为Java,正式向市场推出。Sun公司大肆宣传,许诺这种语言可以”一次编写,到处运行”(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。
网景公司决定与SUN公司结盟,它不仅允许Java程序以applet(小程序)的形式,直接在浏览器中运行;甚至还考虑直接将Java作为脚本语言嵌入网页,只是因为这样会使HTML网页过 ...
JS数据类型及判断&typeof和instanceof的区别
数据类型JS 数据类型分为两大类:
1、原始数据类型:String、Number、Boolean、Undefined、Null、Symbol(es6 新增,表示独一无二的值)、Bigint(es10 新增)
2、引用类型:Object
其中 Object 中又包含了很多子类型(通过原型链继承),比如 Array、Date、Function、Math、Map、Set、Regexp 等等,总之除了原始数据类型皆为引用类型。
存储方式原始数据类型:直接存储在栈(stack)中,占据空间小、大小固定,属于被频繁使用数据
引用数据类型:同时存储在栈(stack)和堆(heap)中,占据空间大、大小不固定。引用数据类型在栈中存储指针,指向堆中存的实体的地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。
ps:这样设计的原因在于原始类型因为占据空间是固定的,可以将他们存在较小的内存中-栈中,这样便于迅速查询变量的值。引用数据类型大小不固定且会变化,固然不能直接放在栈中,但是其地址是固定的,可以将地址存在栈中。
类型判断类型判断有以下几种方式
typeof
instan ...
清除npm缓存重新安装npm依赖
最近在运行前端项目时遇到如下报错1234567891011npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! lianshan@2.0.0 serve: `vue-cli-service serve`npm ERR! Exit status 1npm ERR! npm ERR! Failed at the lianshan@2.0.0 serve script.npm ERR! This is probably not a problem with npm. There is likely additional logging output above.npm ERR! A complete log of this run can be found in:npm ERR! /Users/xxx/.npm/_logs/2024-03-15A53_03_05_072Z-debug.log
原因时node_modules依赖出了问题,这种时候重新安装依赖包是最好的方法,谁知道哪个依赖包多了哪个依赖包少了呢?重新来过最稳妥。其余npm报错 ...
一文读懂回流(重排)重绘
回流与重绘 回流重绘是指在网页中进行布局、样式等操作时,浏览器需要重新计算元素的位置和大小(回流)以及重新绘制元素的样式(重绘)的过程。这个过程会消耗很多的计算资源,因此需要尽量减少回流和重绘的次数,以提高网页的性能。
回流和重绘的触发条件包括:当页面布局和几何属性发生变化时,会触发回流和重绘,比如改变元素的位置、大小、边距、填充等。
当元素的样式发生变化时,会触发重绘,比如修改元素的颜色、背景、字体等。
回流何时发生:1、当页面首次加载时,浏览器需要进行初始的回流和重绘来计算和显示页面的布局和样式。
2、当页面的 DOM 结构发生变化,比如增加、删除、移动元素,或者修改元素的样式、尺寸等,都可能引起回流。
3、当浏览器窗口大小发生变化时,需要重新计算元素的布局和位置来适应新的窗口大小。
重绘何时发生:1、回流发生必定引发重绘
2、修改元素的样式,但不影响布局的情况,例如修改元素的颜色、背景色、文本样式等
3、添加或移除元素的类,但不会导致尺寸或位置的变化,会触发重绘但不引起回流。
为了减少回流和重绘的次数,可以采取以下措施:1、使用 CSS3 的 transform 和 opac ...
JS闭包一定要返回函数吗
先说结论不一定闭包的定义: 闭包的定义满天飞, 每个人有每个人的理解, 也无法说找到一个官方定义.MDN: 闭包(closure)是一个函数以及其捆绑的周边环境状态(lexical environment,词法环境)的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在 JavaScript 中,闭包会随着函数的创建而被同时创建。JS高级程序设计(第4版):闭包是指有权访问另一个函数作用域中的变量函数;
越定义越局限我们的视野, 阻碍我们去理解闭包, 但确实又需要那么一句话去描述闭包, 我谈谈我心中的这一句话: 理解闭包的关键在于, 外部函数调用之后其变量对象本应该被销毁,但闭包的存在使我们仍然可以访问外部函数的变量对象。
总之, 1.有个外部函数 2.外部函数里有变量 3.同时也有引用这个变量的敦 (管他叫什么, 函数也好, 对象也好, 反正引用到了这个变量的地方), 4.使用了这个 敦 , 那就构成了闭包
所以根据以上理解, 只要使用了这个敦, 这个地方当然可以是一个内部函数, 外部函数中返回一个内部函数, 在调用外部函数的时候就相当于调用了这个内部函数, ...
Linux grep命令
举例来说,我只想找到 ‘VBird’(前面两个大写字符) 或 ‘Vbird’(仅有一个大写字符) 这个字样,但是不要其他的字符串 (例如 ‘VBIRD’, ‘vbird’ 等不需要),该如何办理? 如果在没有正规表示法的环境中(例如 MS word),你或许就得要使用忽略大小写的办法, 或者是分别以 ‘VBird’ 及 ‘Vbird’ 搜寻两遍。 但是,忽略大小写可能会搜寻到 ‘VBIRD’/‘vbird’/‘VbIrD’ 等等的不需要的字符串而造成困扰。
再举个系统常见的例子好了,假设你发现系统在开机的时候,老是会出现一个关于 ‘mail’ 程序的错误, 而开机过程的相关程序都是在 ‘/lib/systemd/system/‘ 底下,也就是说,在该目录底下的某个档案内具有 ‘mail’ 这个关键词,你想要将该档案捉出来进行查询修改的动作。 此时你怎么找出来含有这个关键词的档案? 你当然可以一个文件一个文件的开启,然后去搜寻 ‘mail’ 这个关键字,只是….. 该目录底下的档案可能不止 100 个说~ 如果了解正规表示法的相 ...
使用ChatGPT编写Spark
from pyspark import SparkConf, SparkContextimport os
配置 PySparkconf = SparkConf().setAppName(“WeatherDataProcessing”)sc = SparkContext(conf=conf)
从 HDFS 读取 station.txt 文件station = sc.textFile(“hdfs://localhost:9000/user/data/input/station.txt”).map(int).collect()
dir_path = ‘hdfs://localhost:9000/user/data/input/data/‘start_y = 1980end_y = 2020
def process_data(line, prefix):line = line.split ...
chatGPT——python数据处理对话实例
Model: GPT-4
1 / 1
df.plot如何设置画布大小,如何将横坐标的数据显示完整而不是5年一个刻度
1 / 1
ChatGPTChatGPT
要设置pandas.DataFrame.plot的画布大小,你可以使用matplotlib.pyplot库的figure函数来设置画布尺寸,然后用plt.xticks()调整横坐标刻度。
以下是一个示例:
python
12345678910111213141516171819import pandas as pdimport matplotlib.pyplot as plt# 假设你的数据框名为dfdf = pd.DataFrame({"Year": range(2000, 2022), "Value": range(2000, 2022)})# 设置画布尺寸plt.figure(figsize=(12, 6))# 使用pandas.DataFrame.plot绘制图像ax = df.plot(x="Year", y=&quo ...
数据库无法使用SSL加密与SQL_server建立连接
Model: Default (GPT-3.5)
com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target”。 ClientConnectionId:f885fd47-0376-4231-a88f-bc248715569c at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:3937) at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1950) at com. ...
重定向输出文件
Model: Default (GPT-3.5)
如何用管道将一行代码执行的运行信息传到某文件里
1 / 1
您可以使用 shell 中的重定向操作符 > 将命令的输出重定向到文件中。例如,如果您想将 command 命令的输出保存到名为 output.txt 的文件中,可以使用以下命令:
bash
1command > output.txt
如果您希望将命令的输出追加到文件末尾而不是覆盖文件中的内容,可以使用 >> 操作符,例如:
bash
1command >> output.txt
如果您想将命令的输出以及标准错误一起保存到文件中,可以使用 2>&1 重定向标准错误输出到标准输出,然后再将标准输出重定向到文件中,例如:
bash
1command > output.txt 2>&1
这将会将 command 的所有输出(包括标准输出和标准错误)保存到 output.txt 文件中。