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

下节再学 位操作符

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

相关推荐
怪奇云呼军1 分钟前
闪电智能VoiceAgent 如何管理呼入、接听、桥接和挂断状态?
java·前端·网络·数据库·人工智能
云浪4 分钟前
Milvus + RAG 实战:《红楼梦》问答助手
前端·人工智能·后端
梦醒沉醉18 分钟前
2、JavaScript控制流和错误处理
javascript
恋猫de小郭22 分钟前
Dart 3.13 大更新,感觉比 Flutter 更带劲
android·前端·flutter
晓得迷路了23 分钟前
栗子前端技术周刊第 142 期 - DeepSeek Harness、pnpm 12 RC、crypto‑js...
前端·javascript·ai编程
xiaoxiangsiyan28 分钟前
RHCE之2026年全套考点详解
运维·前端·网络·chrome·学习·rhce
caimouse33 分钟前
ReactOS 图形系统分析(33):字体子系统 — font.c
c语言·开发语言·reactos
Fluxart.ai33 分钟前
Etsy手工制品换背景,用什么AI能保留手作质感?
前端·javascript·人工智能
cxr8281 小时前
HyperMind Lab M1 架构地基 Implementation Plan <二>
开发语言·人工智能·架构
小玮看世界1 小时前
[Python] str() 和 join() 的区别与实战避坑指南
前端·javascript·python