UDN-企业互联网技术人气社区

板块导航

浏览  : 1772
回复  : 0

[干货] 使用ES6新特性开发微信小程序(5)——内建对象的变化

[复制链接]
舞操的头像 楼主
发表于 2017-1-6 21:07:50 | 显示全部楼层 |阅读模式
本帖最后由 舞操 于 2017-1-6 21:10 编辑

  ES6对Object、Array、String、Number、Math等原生对象添加了许多新的API

  Object对象

  Object.prototype.__proto__:对象具有属性__proto__,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的属性和方法。

  Object.assign(target, ...sources):可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象。

  Object.is(value1, value2)用来判断两个值是否是同一个值。

  Object.setPrototypeOf(obj, prototype)将一个指定的对象的原型设置为另一个对象或者null(既对象的[[Prototype]]内部属性)。

  1.   let Shape = function() {};

  2.   let shape1 = new Shape();

  3.   console.log(shape1.__proto__ === Shape.prototype); // 输出: true

  4.   let shape2 = { width: 100, height: 200 };

  5.   let shape3 = Object.assign({}, shape2);

  6.   console.log(shape3); // 输出: Object {width: 100, height: 200}

  7.   console.log(Object.is('Rectangle', 'Rectangle')); // 输出: true

  8.   console.log(Object.is('Rectangle', 'Circle')); // 输出: false

  9.   let shapeProto = {};

  10.   let shape4 = { width: 300, height: 400 };

  11.   Object.setPrototypeOf(shape4, shapeProto);

  12.   shapeProto.x = 10;

  13.   shapeProto.y = 20;

  14.   console.log(`shape4 x is ${shape4.x}, y is ${shape4.y}`); // 输出: shape4 x is 10, y is 20
复制代码


  Array对象

  Array.from(arrayLike[, mapFn[, thisArg]]):可以将一个类数组对象或可遍历对象转换成真正的数组

  Array.of(element0[, element1[, ...[, elementN]]]):将它的任意类型的多个参数放在一个数组里并返回。

  Array.prototype.copyWidthin(target[, start[, end]]):浅拷贝数组的部分元素到同一数组的不同位置,且不改变数组的大小,返回该数组。

  Array.prototype.entries():返回一个 Array Iterator 对象,该对象包含数组中每一个索引的键值对。

  Array.prototype.fill(value[, start = 0[, end = this.length]]):可以将一个数组中指定区间的所有元素的值, 都替换成或者说填充成为某个固定的值。

  Array.prototype.find(callback[, thisArg]):如果数组中某个元素满足测试条件,find() 方法就会返回那个元素的第一个值,如果没有满足条件的元素,则返回 undefined。

  Array.prototype.findIndex(callback[, thisArg]):用来查找数组中某指定元素的索引, 如果找不到指定的元素, 则返回 -1。

  Array.prototype.keys():返回一个数组索引的迭代器。

  Array.prototype.values():返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值。

  Array.prototype[@@iterator]():数组的 iterator 方法,默认情况下与 values() 返回值相同。

  1.   console.log(Array.from("foo")); // 输出: ["f", "o", "o"]

  2.   console.log(Array.from([1, 2, 3], x => x + x)); // 输出: [2, 4, 6]

  3.   console.log(Array.of(1)); // 输出: [1]

  4.   console.log(Array.of(1, 2, 3)); // 输出: [1, 2, 3]

  5.   console.log([1, 2, 3, 4, 5].copyWithin(-2)); // 输出: [1, 2, 3, 1, 2]

  6.   console.log([1, 2, 3, 4, 5].copyWithin(0, 2, 4)); // 输出: [3, 4, 3, 4, 5]

  7.   let arr1 = ["a", "b", "c"];

  8.   let arrEntr1 = arr1.entries();

  9.   console.log(arrEntr1.next().value); // 输出: [0, "a"]

  10.   console.log(arrEntr1.next().value); // 输出: [1, "b"]

  11.   console.log(arrEntr1.next().value); // 输出: [2, "c"]

  12.   console.log([1, 2, 3].fill(4)); // 输出: [4, 4, 4]

  13.   console.log([1, 2, 3].fill(4, 1, 2)); // 输出: [1, 4, 3]

  14.   console.log([4, 9, -25, 36].find((n) => n < 0)); // 输出: -25

  15.   console.log([4, 9, -25, 36].findIndex((n) => n < 0)); // 输出: 2

  16.   let arr2 = ["a", "b", "c"];

  17.   let iter2 = arr2.keys();

  18.   console.log(iter2.next()); // 输出: { value: 0, done: false }

  19.   console.log(iter2.next()); // 输出: { value: 1, done: false }

  20.   console.log(iter2.next()); // 输出: { value: 2, done: false }

  21.   console.log(iter2.next()); // 输出: { value: undefined, done: true }

  22.   let arr4 = ["a", "b", "c"];

  23.   let iter4 = arr4[Symbol.iterator]();

  24.   console.log(iter4.next().value); // 输出: a

  25.   console.log(iter4.next().value); // 输出: b

  26.   console.log(iter4.next().value); // 输出: c
复制代码


  String对象

  String.fromCodePoint(num1[, ...[, numN]]):返回使用指定的代码点序列创建的字符串。

  String.raw(callSite, ...substitutions):是一个模板字符串的标签函数,它的作用类似于 Python 中的字符串前缀 r 和 C# 中的字符串前缀 @,是用来获取一个模板字符串的原始字面量值的。

  String.prototype.codePointAt(pos):返回 一个 Unicode 编码点值的非负整数。

  String.prototype.endsWith(searchString [, position]):用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的,根据判断结果返回 true 或 false。

  String.prototype.includes(searchString[, position]):用于判断一个字符串是否被包含在另一个字符串中,如果包含,就返回true;否则,返回false。

  String.prototype.repeat(count):构造并返回一个重复当前字符串若干次数的新字符串。

  String.prototype.startsWith(searchString [, position]):用来判断当前字符串是否是以另外一个给定的子字符串“开头”的,根据判断结果返回 true 或 false。

  String.prototype[@@iterator]():返回一个新的Iterator对象,它遍历字符串的代码点,返回每一个代码点的字符串值。

[code]  console.log(String.fromCodePoint(42)); // 输出: *

  console.log(String.fromCodePoint(65, 90)); // 输出: AZ

  console.log(String.raw `Hi\n!`); // 输出: Hi\n!

  let str1 = "Zhang san";

  console.log(String.raw `Hi\n${str1}!`); // 输出: Hi\nZhang san!

  console.log('ABC'.codePointAt(0)); // 输出: 65

  console.log('ABC'.codePointAt(1)); // 输出: 66

  let str2 = `To be, or not to be, that is the question.`;

  console.log(str2.endsWith("question.")); // 输出: true

  console.log(str2.endsWith("to be")); // 输出: false

  console.log(str2.includes("question")); // 输出: true

  console.log(str2.includes("To be", 2)); // 输出: false

  console.log("abc".repeat(3)); // 输出: abcabcabc

  console.log(str2.startsWith("To be")); // 输出: true

  console.log(str2.startsWith("not to be")); // 输出: false

  console.log(str2.startsWith("not to be", 10)); // 输出: true

  let str3 = 'A\uD835\uDC68';

  let strIter3 = str3[Symbol.iterator]();

  console.log(strIter3.next().value); // 输出: A

  console.log(strIter3.next().value); // 输出:

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部