《每天十分钟》-红宝书第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

下节再学 位操作符

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

相关推荐
dme.2 分钟前
Javascript之DOM操作
开发语言·javascript·爬虫·python·ecmascript
Cacciatore->5 分钟前
React 基本介绍与项目创建
前端·react.js·arcgis
摸鱼仙人~6 分钟前
React Ref 指南:原理、实现与实践
前端·javascript·react.js
teeeeeeemo7 分钟前
回调函数 vs Promise vs async/await区别
开发语言·前端·javascript·笔记
加油吧zkf12 分钟前
AI大模型如何重塑软件开发流程?——结合目标检测的深度实践与代码示例
开发语言·图像处理·人工智能·python·yolo
贵沫末26 分钟前
React——基础
前端·react.js·前端框架
ejinxian27 分钟前
PHP 超文本预处理器 发布 8.5 版本
开发语言·php
aklry38 分钟前
uniapp三步完成一维码的生成
前端·vue.js
Rubin931 小时前
判断元素在可视区域?用于滚动加载,数据埋点等
前端
爱学习的茄子1 小时前
AI驱动的单词学习应用:从图片识别到语音合成的完整实现
前端·深度学习·react.js