js中的深浅拷贝-编程思维
js中的深浅拷贝 js中有深拷贝、浅拷贝一说,所谓的深浅拷贝是针对value类型为引用类型(函数、对象、数组)而言的,大概理解的就是: 浅拷贝: 拷贝出的对象c和原始对象o,c和o在key对应的value为引用类型时,其指向同一块内存地址,修改一个必然影响另一个。 举个浅拷贝的例子: var shallowCopy = function (src) { var dst = {}
morethink program
js中的深浅拷贝 js中有深拷贝、浅拷贝一说,所谓的深浅拷贝是针对value类型为引用类型(函数、对象、数组)而言的,大概理解的就是: 浅拷贝: 拷贝出的对象c和原始对象o,c和o在key对应的value为引用类型时,其指向同一块内存地址,修改一个必然影响另一个。 举个浅拷贝的例子: var shallowCopy = function (src) { var dst = {}
js中的this指向 首先,js中的this指向是根据运行时确定的,而非定义时。 js中的this指向大致分为如下几种: 作为对象的方法调用 作为普通函数调用 构造调用 call、apply调用 作为对象的方法调用 var obj = { a: 1, getA: function(){ alert ( this === obj ); // true alert (
TypeScript的接口,个人理解就是一种约束,包括各种类型的契约或者代码定义上的契约。当然,和java中的用法基本一致,接口可以被继承也可以被实现。 定义一个简单的interface interface LabelledValue { label: string; } function printLabel(labelledValue: LabelledValue) { conso
TypeScript的类,简单地定义如下: class Person { x: number; // 默认为public类型 y: number; constructor(x1: number, y1: number) { // 默认为public类型 this.x = x1; this.y = y1; } }
js原型、原型链 这几天闲了看了下js的原型,以下内容为个人理解,如有错误,尽请指正。 首先,明确一点:js中的对象分为普通对象和函数对象,一般我们自定义的可以被new的函数称作函数对象,另外js内置了譬如:Array、Date、Object、Function、Number、String、Boolean、RegExp、Error等这些函数对象: 1、只有函数对象才有prototype属性,该属
js中的各种继承实现汇总 首先定义一个父类: function Animal(name) { this.name = name || '动物' this.sleep = function () { console.log(this.name + '正在睡觉!') } } Animal.prototype.eat = function (food) { console.lo
从今天开始学习typescript了,记录ts学习点滴,最后,使用ts结合nodejs开发后端应用,一起共勉吧: typescript最新版本2.6,所有演示代码均基于此版本 开始之前确定安装了如下npm包: npm i typescript -g // ts全局包 npm i ts-node -g // 使用ts-node可以直接运行ts文件 基础类型 布尔类型 let
做app开发时,用到了webview,需要监听webview的长按事件,使用原生的js处理监听如下: var timeOutEvent = 0; //定时器 //开始按 function gtouchstart() { timeOutEvent = setTimeout("longPress()", 500); //这里设置定时器,定义长按500毫秒触发长按
本文为js高级程序设计学习笔记,笔记中不乏本人学习js的一些心得demo,喜欢的朋友可以直接参考原书“javascript高级程序设计”,写本笔记的目的是对js中容易出错、不易理解的地方作个笔记,以免后期继续踩坑。 1、语法 区分大小写:比如typeof用于测试数据类型,不同于typeOf,一个func完全可以定义为typeOf 标识符:首字符必须是字母、下划线或$,之后可以是数字、字母、下划
首先,ECMAScript中的数据类型分为基本类型、引用类型,基本类型的访问操作是按值的。引用类型的值是保存在内存中的对象,操作对象时,实际上操作的是对象的引用,而非对象自身。“javascript高级程序设计”中的描述是“当复制保存着对象的某个变量时,操作的是对象的引用。但在为对象添加属性时,操作的是实际的对象”,下面从数据复制来看下: var num1 = 12; var num2 = n
ECMAScript中有2中属性:数据属性、访问器属性。 数据属性是为了指定某对象的指定key上的一些行为,比如value是否可删除、修改、key可循环遍历等特点。而访问器属性不包含数据值,包含一堆get、set方法(非必须),读取访问对象属性时,采用getter、setter分别实现。 数据属性包括: Configurable:表示能否通过delete删除该属性,或者修改重新定义属性,默认f
webpack:前端打包神器,目前活跃度甚至超过了gulp、grunt等,使用webpack打包,简单快速,下面记录下webpack环境搭建以及基本使用: 1、首先新建一个空白目录,用于项目根目录,比如我这里是simple_project 2、cmd窗口全局安装webpack: npm install webpack -g //cnpm install webpack -g 3、进
/** * 树形结构转换 * @param a * @param idStr * @param pidStr * @param chindrenStr * @returns {Array} */ function transData(a, idStr, pidStr, chindrenStr){ let r = [], hash = {}, id = idStr, pid
对于如下对象数组 [{id: 0, name: "name1"}, {id: 1, name: "name2"},{id: 1, name: "name2"},{id: 1, name: "name2"}, {id: 2, name: "name3"}, {id: 0, name: "name4"}] 现在想要将id相同的对象的name拼起来,笨的算法如下: var ids = [];
下拉框部分代码: <select id="bigType"> <option value="">请选择</option> <option value="1">xiamen</option> <option value="2">beijing</option> </select
function AuthPasswd(string) { if(!string){ jQuery("#low").removeClass("org"); }else if(string && string.length >=6) { if(/[a-zA-Z]+/.test(string) &
直接记录代码: /** * 获取 blob * @param {String} url 目标文件地址 * @return {cb} */ function getBlob(url,cb) { var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.response
reduce():reduce()方法为归并类方法,最常用的场景就是,计算数组中的每一项的总和。 reduce() 方法会遍历数组的每一项,他接收两个参数: 第一个参数:每次遍历都会调用的函数,而这个函数有接收四个参数,分别是:前一个值、当前项、项目的索引和数组对象,而这个函数的返回值,回传给下一次遍历时,执行的这个方法的第一个参数。 第二个参数:归并基础的初始值 我们看一下例子: reduce
1.数组filter方法作用筛选数组,将满足条件的元素放入新数组中 2.语法 : array.filter( function ( item, index,arr) {} )第一个参数: item,必须,当前元素的值 第二个参数 : index,可选,当前元素在数组中的索引值 第三个参数 : arr,当前元素所处的数组对象 3.filter方法特点(1)函数执行次数 === 数组长度 (2)函数
千万注意 必须new Date("2023-06-16 00:00:00") 不能new Date("2023-06-16"),因为 new Date("2023-06-16").getTime()== new Date("2023-06-16 08:00:00").getTime() 这个和时区有关系 new Date("2023-06-16")其实是new Date("2023-06-16