《每天十分钟》-红宝书第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 小时前
1000 人协同压测的环境瓶颈排查:CPU 争用与 Wi\-Fi
前端
第九序言T11 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
excel12 小时前
Marked 与 Markdown 有什么区别?该怎么选?
前端
龙亘川12 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
程序喵大人12 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
Da Da 泓13 小时前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
Raas10013 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
zxcvb15313 小时前
远程查看本地文档:一条轻量 Web 文件服务的工程化链路
前端·远程查看文档
niucloud-admin14 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
程序员大阳14 小时前
副队长JavaScript教程(50)-DOM:网页开发的起点
javascript·dom·es·节点·概念·document·关系