123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- "use strict";
- exports.__esModule = true;
- Object.merge = Object.entries = Object.values = Object.forEach = undefined;
- require("../index");
- var assert = require('assert');
- describe('SuperObject', function () {
- it('Object.merge', function () {
- Array.prototype.test = 'test';
- var a = {
- a: 1,
- b: 2,
- c: {
- c1: 111,
- c2: [111, 222, 333],
- c3: {
- a: 1,
- b: 2
- }
- }
- };
- var b = {
- b: 222,
- c: {
- c2: [1, 2],
- c3: {
- a: 1111,
- d: function () { return 'ddd'; }
- }
- }
- };
- var c = Object.merge({}, a, b);
- assert.equal(b.c.c3.d(), 'ddd');
- assert.equal(c.c.c3.d(), 'ddd');
- delete b.c.c3.d;
- delete c.c.c3.d;
- assert.deepEqual(a, {
- a: 1,
- b: 2,
- c: {
- c1: 111,
- c2: [111, 222, 333],
- c3: {
- a: 1,
- b: 2
- }
- }
- }, 'a不应该变');
- assert.deepEqual(b, {
- b: 222,
- c: {
- c2: [1, 2],
- c3: {
- a: 1111
- }
- }
- }, 'b不应该变');
- assert.deepEqual(c, {
- a: 1,
- b: 222,
- c: {
- c1: 111,
- c2: [1, 2, 333],
- c3: {
- a: 1111,
- b: 2
- }
- }
- });
- assert.deepEqual(Object.merge([], [[0, 0], null, undefined]), [[0, 0], null, undefined]);
- assert.deepEqual(Object.merge([123, null, undefined, 234], [null, 123]), [null, 123, undefined, 234]);
- assert.deepEqual(Object.merge({ a: 1, b: 1 }, { a: null, b: null }), { a: null, b: null });
- assert.deepEqual(Object.merge({ a: 1, b: 1 }, { a: undefined, b: undefined }), { a: undefined, b: undefined });
- assert.deepEqual(Object.merge({ a: { a: 1 }, b: [1] }, { a: null, b: null }), { a: null, b: null });
- assert.deepEqual(Object.merge({ a: { a: 1 }, b: [1] }, { a: undefined, b: undefined }), { a: undefined, b: undefined });
- // 数组是完整覆盖 而不是合并
- assert.deepEqual(Object.merge({ a: [1, 2, 3, 4] }, { a: [10, 20] }), { a: [10, 20, 3, 4] });
- });
- it('Object.values', function () {
- var a = { gggg: 5, zzz: 6, ccc: 7, aaa: 8, bbb: 9 };
- assert.deepEqual(Object.values(a), [5, 6, 7, 8, 9]);
- });
- it('Object.forEach', function () {
- var obj = {
- a: 1,
- b: 3,
- c: 5,
- d: 7
- };
- var arrK = [];
- var arrV = [];
- Object.prototype['aaa'] = 111;
- Object.prototype['bbb'] = 222;
- Object.prototype['ccc'] = 333;
- Object.forEach(obj, function (v, k, o) {
- assert.equal(typeof v, 'number');
- assert.equal(typeof k, 'string');
- arrK.push(k);
- arrV.push(v);
- o[k] += 2;
- });
- assert.deepEqual(arrK, ['a', 'b', 'c', 'd']);
- assert.deepEqual(arrV, [1, 3, 5, 7]);
- assert.deepEqual(obj, { a: 3, b: 5, c: 7, d: 9 });
- });
- it('Object.entries', function () {
- assert.deepEqual(Object.entries({ a: 1, b: 2, c: 'cccc' }), [
- ['a', 1],
- ['b', 2],
- ['c', 'cccc']
- ]);
- assert.deepEqual(Object.entries(['a', 'b', 'c']), [
- ['0', 'a'],
- ['1', 'b'],
- ['2', 'c']
- ]);
- });
- });
|