咱们经常听到JS中“一切皆对象”? 有没有问想过这是什么意思? 其它语言也有“一切皆对象”之说,如Python。 但是Python中的对象不仅仅是像JS对象这样的存放值和值的容器。 Python中的对象是一个类。 JS中有类似的东西,但JS中的“对象”只是键和值的容器:
非可变性是函数式编程的一个核心规则,对于面向对象编程也有很多用处。本文为参考sitepoint(参考链接1)中的文章后所记录的一些主要内容。
本周精读的文章是:surprising-polymorphism-in-react-applications,看看作者是如何解释这个多态性含义的。
看红宝书,重新梳理JavaScript的知识。这部分主要是梳理冷门的知识点(对个人来说是冷门的)
使用Immutable之后,这个问题自然而然就解决了。所谓的追踪困难,无非就是因为对象是mutable的,我们无法确定它到底何时何处被改变,而Immutable每次都会保留原来的对象,重新生成一个对象,(与redux的纯函数概念一样)。但也要注意写代码时的习惯:
在js中[[Prototype]]属性最常出现的地方构造函数添加“原型方法”上面了。
目前主流的有两种模块语法,一是Node.js专用的CJS,另一种是浏览器和Node.js都支持的ESM,在ESM规范没有出来之前,Node.js的模块编写使用的都是CJS,但是现在ESM已经逐渐在替代CJS成为浏览器和服务器通用的模块解决方案。
JSPatch 是一个 iOS 动态更新框架,只需在项目中引入极小的引擎,就可以使用就可以使用 JavaScript 调用任何 Objective-C 原生接口,获得脚本语言的优势:为项目动态添加模块,或替换项目原生代码动态修复 bug,目前在 github 上开源。 微信 iOS 客户端使用了 JSPatch,本篇文章详细阐述 JSPatch 的实现原理和一些细节,以帮助使用者更好地了解和使用 JSPatch。文章较长,建议在 PC / Mac 观看。 大纲 基础原理 方法调用 1.require
将[]赋值给一个数组对象,是清空数组的捷径(例如: arr = [];),但是需要注意的是,这种方式又创建了一个新的空对象,并且将原来的数组对象变成了一小片内存垃圾。
“回?掏”。最近做东西,有点儿玩不转复杂数据类型,写篇博文再回顾下深、浅拷贝相关知识。深、浅的区分主要在对复杂数据类型进行操作的时候。 By the way:时间过得很快,十月了,之前定了个小目标:
作为程序员(更高大尚的称谓:研软件研发)的我们,无论是用Javascript,还是.net, java语言,肯定都遇到过内存泄漏的问题。只不过他们都有GC机制来帮助程序员完成内存回收的事情,如果你是C++开发者(你懂的)。。。。。,如果你是前端开发者,肯定在使用Javascript(你或者会说,Js是世界上最棒的语言),但我这里也得告诉你,Js的内存泄漏会来得更为突然,或者让你都无法察觉。本文就带大家领略一下Js的风骚:
虽然在js中没有类,构造函数本质上也只是一个普通函数,new关键字调用一个构造函数来创建一个新对象,也是js在努力模仿面向对象语言中类new对象的实现,这个模仿过程也对开发者造成很大误导,但不能否认的是也降低了理解的门槛,在初期快速上手阶段还是很有帮助的。
Vue.js是一款流行的JavaScript框架,它采用了虚拟DOM(Virtual DOM)的概念来提高性能和开发效率。虚拟DOM是Vue.js的核心之一,它通过在内存中构建一个轻量级的DOM树来代替直接操作真实的DOM,从而减少了对真实DOM的操作次数,提高了页面渲染效率。本文将深入探讨Vue.js中虚拟DOM的作用、核心源码分析。
在上一篇文章中JavaScript中AMD和ES6模块的导入导出对比,偏向于理论层面,还有一些同学在微信群里或是私下里针对一些问题进行了沟通,所以有了这一篇文章,对js的导入导出进行总结和实践
在现代js中,let&const是创建变量的不同方式。 在早期的js中,咱们使用var关键字来创建变量。 let&const关键字是在ES6版本中引入的,其目的是在js中创建两种不同类型的变量,一种是不可变的,另一种是可变的。
如果html文档中用id属性为元素命名。并且如果 window对象没有此名字的属性,则window对象会赋予一个属性,其名字为id属性的值,其值指向该元素
具体查看详细解释, 对理解基础知识点还是很有帮助的. 例如: js的赋值运算顺序永远都是从右往左的,但是.是优先级最高的运算符.
JS作为函数式编程的语言,受其他语言的影响,也可以用对象式编程,一种是用函数模仿对象,另一种是ES6添加的class。
https://cnodejs.org/topic/5231a630101e574521e45ef8
JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个概念一知半解,碰到问题靠“猜”,却不理解它的规则!
JS 中的this关键字对于初学者来说是一个谜,对于经验丰富的开发人员来说则是一个永恒的难题。this 实际上是一个移动的目标,在代码执行过程中可能会发生变化,而没有任何明显的原因。首先,看一下this关键字在其他编程语言中是什么样子的。 以下是 JS 中的一个 Person 类:
vue-chartjs 是 Vue 对于 Chart.js 的封装. 你可以很简单的创建可复用的图表组件.
在上一篇文章《JS基础知识点(一)》中我们学习了什么是js、js写法、js数据类型、js的函数。在本篇文章中我们将学习重要的部分:面向对象以及常用对象(math、date、string等)的方法
ECMAScript是JavaScript的核心,但如果要在web中使用JavaScript,那么BOM则是真正的核心,BOM提供了很多对象,用于访问浏览器的功能,这些功能与任何网页内容无关。
js的内存机制在很多前端开发者看来并不是那么重要,但是如果你想深入学习js,并将它利用好,打造高质量高性能的前端应用,就必须要了解js的内存机制。对于内存机制理解了以后,一些基本的问题比如最基本的引用数据类型和引用传递到底是怎么回事儿?比如浅复制与深复制有什么不同?还有闭包,原型等等就迎刃而解了。
理解ES 全称: ECMAScript js语言的规范 我们用的js是它的实现 js的组成 ECMAScript(js基础) 扩展-->浏览器端 BOM DOM 扩展-->服务器端 Node.js ES5 严格模式 运行模式: 正常(混杂)模式与严格模式 应用上严格式: 'strict mode'; 作用: 使得Javascript在更严格的条件下运行 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为 消除代码运行的一些不安全之处,保证代码运行的安全 需要记住的几个变化 声明定
JS的变量可能包含两种不同数据类型的值,基本类型和引用类型; 基本类型是指简单的数据段,引用类型是指可能由多个值构成的对象; JS高级程序设计第三章介绍了变量分为 5种简单数据类型(string/number/undefined/null/boolean)--------基本类型(按值访问): 这五种数据类型是按值访问的,可以操作保存在变量中的实际的值. 1个复杂数据类型(object)--------引用类型(按索引访问): 引用类型的值是保存在内存中的对象;js不予许直接访问内存中的位置,也就是说不能直
单例模式 (Singleton) 的实现在于保证一个特定类只有一个实例,第二次使用同一个类创建新对象的时候,应该得到与第一次创建对象完全相同的对象。 当创建一个新对象时,实际上没有其他对象与其类似,因为新对象已经是单例了 {a:1} === {a:1} // false 。
背景 在正式进入分享之前,简单介绍一下做这个小程序新框架的背景思路,主要目的有以下几点: 新框架和微信的主客户端解耦,能够独立运行,并且可以同时支持小程序和小游戏。 新框架能去拥抱更多的Web特性,深入到Chromium内核中,去支持更多平台。 还有一个目的就是,通过新框架去拓宽小程序生态的边界,能够在许多非移动端设备,提供微信小程序生态。 ---- 1 小程序和PWA 首先来了解一下小程序和PWA,可以说小程序设计之初,还是吸收了很多Web特性,这也使得小程序和PWA应用的用户体验很接近,包括技术
reverse----把元素下标进行互换,将原数组的元素进行反转,会改变原数组,并且反转后,还会返回一个数组
Node.js 是一个开源与跨平台的 JavaScript 运行时环境。 它是一个可用于几乎任何项目的流行工具!
1、函数内部不需要new构建函数的过程,直接用this代替对象写属性和方法,也不需要return返回值。比工厂方法更方便。
你发现它重新渲染了,因为普通的 class 组件只要 setState 就会渲染。
本篇主要讲下对象的属性与方法的修改问题。由于js中修改对象的属性和方法简直容易至极,所以任何人都可以更改js中的具有可访问可修改权限的对象。这就带来极大的风险,容易造成各种奇葩的bug问题且难以排查,更别说如果是多人协同开发的情况下,某个人改动已有方法时,一旦产生bug,且被其他维护,那找起问题根源的麻烦程度简直是想要杀人的。
Hello小可爱们,今天我们又要回到学习主题咯,前面学习了HTML和CSS的用法,今天我们就要为Web页面注入生命啦,那就是JavaScript,通过JavaScript我们可以让我们的页面动起来,这也是Web开发中的一座大山。
这一章相对来说是部重头戏,看完之后才发现用了这么久的js,却很少有用真正OO的思想在写js代码……
exports和module.exports的适用误区
JS第一天: 作用域: 全局 局部: 块级 函数 …. 作用域链 JS垃圾回收机制GC, 内存分配, 内存使用, 内存回收 全局作用域浏览器关了才回收, 函数作用域执行完后才回收 闭包 内部函数+外部函数的变量 变量和函数的提升 函数的动态参数和剩余参数–展开表达式 箭头函数: this指向上一个作用域的this 数组解构, 多维数组 对象解构, 多维对象 forEach: 循环遍历数组对象 filter数组筛选: 会返回一个新数组 价格筛选案例 王者荣耀筛选英雄案例 JS第二天: 创建对象的三种方式: 1
本文写了好久(个人菜+没时间),看了很多博客,才写完这篇博客。如果对你有所帮助,希望点赞一波。
5月30日12点,Node.js 8正式发布了,这个版本具有一系列新功能和性能改进,并且这些功能和改进将获得长期支持(LTS)。
关于 JS 是面向对象编程语言还是函数式编程语言,还是存在很多困惑。确实,JS 可以两种都兼容,但这会导致一个问题,是什么呢?会导致人们会有这样的疑问:在 JS 中,所有的东西都是对象?
在javascript语言中,原型与原型链是一个非常重要的概念,因为它们是javascript语言得以成立的根本。因为javascript是基于原型的面向对象编程语言,这有别于基于类的java、python等面向对象编程语言。虽然javscript现在也有了class,但它骨子里还是个基于原型的语法糖罢了。所以在使用javascript时,始终要记清基于原型,基于原型,基于原型。
由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念。所以,要想实现继承,可以用js的原型prototype机制或者用apply和call方法去实现
Node.js 里面的许多对象都会分发事件:一个 net.Server 对象会在每次有新连接时触发一个事件, 一个 fs.readStream 对象会在文件被打开的时候触发一个事件。 所有这些产生事件的对象都是 events.EventEmitter 的实例。 EventEmitter 类 events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。 你可以通过require(“events”);来访问该模块。
每年,都会有很多新的语言特性在 ECMAScript 中得到标准化,然后在浏览器中实现。今年我最喜欢的新特性之一是对象的 groupBy。
因篇幅原因,将分为两篇文字总结。 内容将覆盖防抖节流(完成)、作用域(已复习)笔试题作用域、预编译(已复习)、闭包(完成)、this指向问题(完成)、new 一个对象经历了什么(完成)、深拷贝浅拷贝(完成)、js类型(完成)、js事件流事件处理程序事件委托(已完成)、隐式转换显示转换(完成)、原型链(完成)、继承(完成)、dns预获取(完成)、promise(完成)、js事件执行机制宏任务,微任务(完成)、async await(完成) js事件思维导图
领取专属 10元无门槛券
手把手带您无忧上云