首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

你不知道的javaScript笔记(3)

= value; 类型: 语言类型有六种 : string number boolean null undefined object 内置对象: String Number Boolean Object...RegExp Error var myObject = {     a:2 }       myObject.a; //2    属性访问       myObject["a"] // 2  键访问 ES6 可计算属性名...会检查给定的属性名是否直接存在于对象中(而不是在原型链)并且满足enumerable:true Object.keys(...)...返回一个数组,包含所有属性,无论是否可枚举 遍历  for .. in 可以用来遍历对象的可枚举属性列表 对于数值索引的数组来说,可以使用标准的for 循环 ES5 中新增的   forEach(..)...会遍历数组中所有值并忽略回调函数的的返回值。 every(...) 会一直运行到回调函数返回false some(...)

68650
您找到你想要的搜索结果了吗?
是的
没有找到

【JS】307- 复习 Object.assign 原理及其实现

浅拷贝 Object.assign 上篇文章介绍了其定义和使用,主要是将所有可枚举属性的值从一个或多个源对象复制到目标对象,同时返回目标对象。...会检查给定的属性名是否直接存在于对象中(而不是在原型链上)并且满足 enumerable: true。...,但是这样写没有必要,因为 undefined 和 null 是相等的(高程 3 P52 ),即 undefined == null 返回 true,只需要按照如下方式判断就好了。...返回一个数组,包含所有可枚举属性 // 只会查找对象直接包含的属性,不查找[[Prototype]]链 Object.keys( v1 ); // [ '0', '1', '2' ] Object.keys...// } 原因很简单,因为此时 undefined、true 等不是作为对象,而是作为对象 b 的属性值,对象 b 是可枚举的。

96020

JavaScript 判断空对象、空数组的方法

空字符串 String [] false false 空数组 Array {} false false 空对象 Object 从表格中,我们可以看出想要判断是不是null, undefined...我们依旧可以通过isPrototypeOf()方法实现判断一个数据是不是对象。...(obj) && Object.keys(obj).length === 0 其中,Object.keys()方法会返回一个由给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for......in 循环遍历该对象返回的顺序一致(该方法属于 ES5 标准,IE9 以上和其它现代浏览器均支持)。...若要兼容IE9以下,可以用 for...in替代,但要注意for...in 会将对象原型链上的属性也枚举出来,所以要借hasOwnProperty()方法来判断是不是对象本身的属性。

28.4K42

ES6(四)用Promise封装一下IndexedDB 配置文件内部成员建立对象库以及打开数据库初始化对象添加对象修改对象删除对象清空仓库里的对象删除对象仓库删除数据库按主键获取对象

,是新的对象覆盖掉原来的对象,一开始是想直接put,但是后来实践的时候发现,可能修改的时候只是修改其中的一部分属性,而不是全部属性,那么直接覆盖的话,岂不是造成参数不全的事情了吗?...对象 第二个参数是要添加的对象,其属性必须有主键和索引,其他随意。 返回值 成功后会返回对象ID 点右键可以刷新数据,如图: ? 更新后的数据,如图: ?...getAll() }) 仓库名 第一个参数是对象仓库的名称,目前暂时采用字符串的形式。...getAll() }) 仓库名 第一个参数是对象仓库的名称,目前暂时采用字符串的形式。...getAll() }) 仓库名 第一个参数是对象仓库的名称,目前暂时采用字符串的形式。

2.1K20

避免这些常见的JavaScript错误

在今天,JavaScript是最流行的编程语言之一,如果你希望钻研JavaScript,这里有几个需要避免的问题 1.使用==而不是=== 在刚开始学习JavaScript时,这是初学者最容易犯的错误...var foo = 12;function changeFoo() { foo = 34; //改变的是全局作用域而不是局部作用域}changeFoo();console.log(foo);//输出34...( // 将函数写在圆括号中 function(){} // 返回函数对象)() // 立即调用// 也可以使用下面同样函数效果!...可以使用Object.keys、Object.entriees或者for循环 // 给全局对象增加一个属性,所有对象都会继承这个对象,Object.prototype.WTF = "this should...但是这样会弄乱你的代码并造成错误,这里有两个著名的例子: /** 这里编译器会在return后加分号,造成函数返回undefined**/function test(){ var name = "Hello

62740

如何高效检查JavaScript对象中的键是否存在

} 直接访问一个不存在的键会返回undefined,但是访问值为undefined的键也是返回undefined。所以我们不能依赖直接键访问来检查键是否存在。...== 'undefined') { console.log(user.name); } typeof会对不存在的键返回"undefined",对存在的键返回其它类型,如"string"。...然而,这种方法有几个缺点: 需要额外的操作(typeof)而不是直接比较 比较冗长且需要否定检查(!...); } 这种方法只会返回对象自身拥有的键,而不会检查继承的属性: 只检查自身键,不包括继承的 方法名清晰,容易理解 缺点是hasOwnProperty需要方法调用,在性能关键的代码中可能会有影响。...== 'undefined'; } function objectKeysCheck() { return Object.keys(user).includes(key); } // 运行每个函数

8410

ES6入门之对象的新增方法

,另外如果该参数不是对象,那么Object.assign会将其转为对象返回 const t = {a: 2} Object.assign(t) t // {a: 2} Object.assigin(...2) // "object" 另外由于null 和 undefined 无法转换位对象,那么如果他们作为第一个参数就会报错,如果不是在第一个参数则不会有这个问题 Object.assign(undefined...,所以可以从o 中读取proto 的属性 注意:如果第一参数不是对象,将自动转换为对象,由于返回的还是第一个参数,所以这个操作不会产生任何效果,另外由于 undefined 和 null 无法转换为对象...所有的特性也和 上面一样,第一个参数如果不是对象将转换为对象undefined和null 会报错 5....Object.keys(),Object.values(),Object.entries() 5.1 Object.keys() 用于返回一个数组,成员的参数是对象自身的所有可遍历属性的键名 let obj

70210

ES6的语法

模式匹配,等号左右两边模式相同,不能解构赋值undefined 部分匹配,左边变量少于右边数组 右边不是数组 表达式惰性求值,需要赋值的时候执行表达式 对象的解构赋值 let{a:a,b:b,c:c}...}) flatMap只能拉平一层 empty,[,,,] empty:什么都没有,不是undefined不是null forEach,some,every,reduce,filter跳过空元素 map...Object.keys():返回数组,包含对象自身所有可枚举属性的键名 JSON.stringify():只串行化对象自身的可枚举属性 Object.assign():忽略enumerable为...arr.concat()浅拷贝 Object.defineProperty 扩展属性 for..in循环:只遍历对象自身的和继承的可枚举属性 Object.keys(obj):返回数组,包含对象自身所有可枚举属性...(5,null,10) function abc(a,b=5,c){ console.log(a,b,c)5 5 10 } abc(5,undefined,10) **长度** length计算方式

9210

javascript 中的解构技巧

,以下是我整理的几种判断和解构方法检测对象中是否存在某个键使用 in 操作符in 操作符可以检查一个对象是否有给定的属性,如果指定的属性在指定的对象或其原型链中,则 in 运算符返回 trueconst... hasOwnProperty 方法如果你只想检查对象自身的属性,而不是从原型链继承的属性,你可以使用 hasOwnProperty 方法。...');}使用 Object.keys 或 Object.getOwnPropertyNames这两个方法都会返回一个由一个对象自身的(非继承的)可枚举或所有属性的字符串数组。...const obj = { name:'iwhao', age: 18, gender: '男' };// 检查可枚举属性if (Object.keys(obj).includes('name')) {...,并且它不是 undefined 或 null');}注意:这种方法不会检查属性是否是对象自身的属性。

8510

这一次,彻底理解JavaScript深拷贝

会忽略 symbol 不能序列化函数 不能解决循环引用的对象 显然这绝对不是我们想要的一个合格的深拷贝函数 基本版 手动实现的话我们很容易写出如下函数 const clone = (target) =...--> 先看下这个函数做了什么:创建一个新对象,遍历原对象,并且将需要拷贝的对象依次添加到新对象上,返回对象。...解决循环引用问题,我们需要额外有一个空间,来专门存储已经被拷贝过的对象。当需要拷贝对象时,我们先从这个空间里找是否已经拷贝过,如果拷贝过了就直接返回这个对象,没有拷贝过就进行接下来的拷贝。...在计算机程序设计中,弱引用与强引用相对,是指不能确保其引用的对象不会被垃圾回收器回收的引用。 一个对象若只被弱引用所引用,则被认为是不可访问(或弱可访问)的,并因此可能在任何时刻被回收。...如果此方法在自定义对象中未被覆盖,toString() 返回 "object type",其中type是对象的类型。

1.1K62
领券