《每天十分钟》-红宝书第4版-语言基础-数据类型(五)

接上篇再学个比较有用的 Symbol.isConcatSpreadable

这个符号作为一个属性表示"一个布尔值,如果是 true,则意味着对象应

该用 Array.prototype.concat()打平其数组元素"。ES6 中的 Array.prototype.concat()方法会

根 据 接 收 到 的 对 象 类 型 选 择 如 何 将 一 个 类 数 组 对 象 拼 接 成 数 组 实 例 。 覆 盖 Symbol.isConcat-

Spreadable 的值可以修改这个行为。

javascript 复制代码
let initial = ['foo'];
let array = ['bar'];
console.log(array[Symbol.isConcatSpreadable]); // undefined
console.log(initial.concat(array)); // ['foo', 'bar']
array[Symbol.isConcatSpreadable] = false;
console.log(initial.concat(array)); // ['foo', Array(1)]
let arrayLikeObject = { length: 1, 0: 'baz' };
console.log(arrayLikeObject[Symbol.isConcatSpreadable]); // undefined
console.log(initial.concat(arrayLikeObject)); // ['foo', {...}]
arrayLikeObject[Symbol.isConcatSpreadable] = true;
console.log(initial.concat(arrayLikeObject)); // ['foo', 'baz']
let otherObject = new Set().add('qux');
console.log(otherObject[Symbol.isConcatSpreadable]); // undefined
console.log(initial.concat(otherObject)); // ['foo', Set(1)]
otherObject[Symbol.isConcatSpreadable] = true;
console.log(initial.concat(otherObject)); // ['foo']

在实际开发过程中我们通常使用解构后 再 concat

javascript 复制代码
console.log(initial.concat(...otherObject.values())); //  ['foo', 'qux']

Object 类型

创建一个对象

javascript 复制代码
var o = new Object();
var b = new Object; //合法,但不推荐

每个 Object 实例都有如下属性和方法。

  • constructor:用于创建当前对象的函数。在前面的例子中,这个属性的值就是 Object()
    函数。
  • hasOwnProperty(propertyName):用于判断当前对象实例(不是原型)上是否存在给定的属
    性。要检查的属性名必须是字符串(如 o.hasOwnProperty("name"))或符号。
  • isPrototypeOf(object):用于判断当前对象是否为另一个对象的原型
  • propertyIsEnumerable(propertyName):用于判断给定的属性是否可以使用for-in 语句枚举。与
  • hasOwnProperty()一样,属性名必须是字符串。
  • toLocaleString():返回对象的字符串表示,该字符串反映对象所在的本地化执行环境。
  • toString():返回对象的字符串表示。
  • valueOf():返回对象对应的字符串、数值或布尔值表示。通常与 toString()的返回值相同。
javascript 复制代码
var o = {"name":"zhangsan"}
o.toLocaleString() //'[object Object]'
o.toString() //'[object Object]'
o.valueOf() //{name: 'zhangsan'}

操作符

一元操作符

只操作一个值的操作符叫一元操作符(unary operator)。一元操作符是 ECMAScript 中最简单的操作符。

javascript 复制代码
var age = 29;
var t = age++;
console.log(t,age) //29 30
javascript 复制代码
var age = 29;
var t = ++age;
console.log(t,age) //30 30

一元加和减

javascript 复制代码
var age = 29;
var t = +age //29
t += age //58

下节再学 位操作符

最近刀郎出了新专辑《山歌寥哉》不错~

相关推荐
剪刀石头布啊11 分钟前
chrome单页签内存分配上限问题,怎么解决
前端
剪刀石头布啊13 分钟前
css实现一个宽高固定百分比的布局的一个方式
前端
剪刀石头布啊17 分钟前
js数组之快速组、慢数组、密集数组、稀松数组
前端
Ro Jace20 分钟前
计算机专业基础教材
java·开发语言
代码游侠37 分钟前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
mango_mangojuice39 分钟前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
devmoon1 小时前
运行时(Runtime)是什么?为什么 Polkadot 的 Runtime 可以被“像搭积木一样”定制
开发语言·区块链·智能合约·polkadot·runtmie
时艰.1 小时前
Java 并发编程 — 并发容器 + CPU 缓存 + Disruptor
java·开发语言·缓存
忆~遂愿1 小时前
GE 引擎进阶:依赖图的原子性管理与异构算子协作调度
java·开发语言·人工智能
Days20501 小时前
简单处理接口返回400条数据本地数据分页加载
前端