var _assign = require('object-assign');
對應es6的object.assign合併兩個物件的屬性。
/*
object-assign
(c) sindre sorhus
@license mit
*/'use strict';
/* eslint-disable no-unused-vars */
// 獲取物件的symbols屬性方法
var getownpropertysymbols = object.getownpropertysymbols;
// 用來判斷某個物件是否含有指定的屬性,和 in 運算子不同,該方法會忽略掉那些從原型鏈上繼承到的屬性。
var hasownproperty = object.prototype.hasownproperty;
// propertyisenumerable() 方法返回乙個布林值,表示指定的屬性是否可列舉。通過原型鏈繼承的屬性除外。
var propisenumerable = object.prototype.propertyisenumerable;
// 建構函式建立乙個物件包裝器。
function toobject(val)
// 返回轉換後的物件
return object(val);
}// 是否使用原生屬性
function shouldusenative()
// 檢測老v8版本中有bug的屬性列舉順序。
// detect buggy property enumeration order in older v8 versions.
// object.getownpropertynames()方法返回乙個由指定物件的所有自身屬性的屬性名
// (包括不可列舉屬性但不包括symbol值作為名稱的屬性)組成的陣列。
// // object.getownpropertynames(test1) = ["0", "1", "2", "length"]
test1[5] = 'de';
// object.getownpropertynames(test1) = ["0", "1", "2", "5", "length"]
if (object.getownpropertynames(test1)[0] === '5')
// var test2 = {};
// 給物件test2新增屬性,對應的val值是從0~10
for (var i = 0; i < 10; i++)
// 遍歷test2的屬性名,返回對應的值,生成乙個新的陣列order2
// order2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
var order2 = object.getownpropertynames(test2).map(function (n) );
// 如果屬性名和值不能一一對應,返回false
if (order2.join('') !== '0123456789')
// var test3 = {};
// test3是乙個屬性名和值相等的物件
'abcdefghijklmnopqrst'.split('').foreach(function (letter) );
// 獲取根據test3與乙個空物件合併生成的新物件的所有key值,並轉換成字串
if (object.keys(object.assign({}, test3)).join('') !==
'abcdefghijklmnopqrst')
return true;
} catch (err)
}// 如果瀏覽器支援es6,就使用原生的,否則需要相容處理
module.exports = shouldusenative() ? object.assign : function (target, source)
} if (getownpropertysymbols)
}} }
return to;
};
《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具
檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...
原始碼閱讀 Glide原始碼閱讀之with方法(一)
前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...
原始碼閱讀 Glide原始碼閱讀之load方法(二)
原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 首先,load方法有以下幾個過載方法 public requestbuilder load nullable bitmap bitmap public requestbuilder load nu...