crm踩坑記(一)


目錄

antd

  1. antd2.0.1里的Cascorder這個組件,它的defaultValue不起作用,是一個bug。當我發現這是一個bug的時候,應該想着如何去避免這個bug,比如使用value, 而不是告訴別人這是個bug。要學會自己解決問題!!!

es6

Object.entries()

Object.entries()方法返回給定對象自己的枚舉屬性[key, value]對的數組。其順序和與for...in循環提供的順序相通,區別在於for...in循環枚舉原型中的屬性。

下面看例子:

const Person = {
    name: 'yuzf',
    age: '18',
    gender: 'man',
};

// [['name': 'yuzf'], ['age': 18], ['gender', 'man']]
console.log(Object.entries(Person));
const result = {};

// 數組解構/for of 循環
for (const [key, value] of Object.entries(Person)) {
    // good
    result[key] = value; 

    // bad
    // result.key = value;
}

Object.keys()

Object.keys()返回一個數組,其元素是對應於直接在對象上發現的可枚舉屬性的字符串(即不包含原型鏈上的)。屬性的順序與通過手動循環對象的屬性給出的順序相同。

下面直接看代碼說明:

const arr1 = ['a', 'b', 'c'];
console.log(Object.keys(arr1)); // ['0', '1', '2']

const person = {
    name: 'yuzf',
    age: 18,
    gender: 'man',
};

for (const key of Object.keys(person)) {
    console.log(key); // name, age, gender
}

Object.getOwnPropertyNames()

Object.getOwnPropertyNames()方法返回一個直接發現給定對象的所有屬性(可枚舉和不可枚舉)的數組。

下面看代碼例子:

const arr = ['a', 'b', 'c'];
console.log(Object.getOwnPropertyNames(arr).sort);
// logs: ['0', '1', '2', 'length']

const arr2 = {
    name: 'yuzf',
    age: 18,
    gender: 'man',
};
console.log(Object.getOwnPropertyNames(arr).sort);
// logs: ['name', 'age', 'gender']

很神奇的用法!!!

之前,我也遇到這樣的需求, 將一個數組里包含的多個對象轉成一個對象,結構像下面這個樣子:

// origin
const Person = [
    { name: 'yuzf'},
    { age: 18 },
    { gender: 'man' },
];

// to => this
{
    name: 'yuzf',
    age: 18,
    gender: 'man',
}

// do
const obj = Person.reduce((x, y) => Object.assign({}, x, y), {}) 

eslint

Do not access Object.prototype method 'hasOwnProperty' from target object no-prototype-builtins, 大概的意思是不要使用對象原型上的方法,因為原型上的方法可能被重寫了。This is why

那么該如何避免這個問題呢?下面請看代碼:

// bad
if (obj.hasOwnProperty('name')) {
}

// good
if (Object.prototype.hasOwnProperty.call(obj, 'name')) {
}

傻逼

可能是自己代碼寫着寫着就將自己寫懵了,fields.concat(['xx']), 這行代碼執行后, 怎么fields的值沒有變化。

這真是一件很傻的事情。

其他

  1. 一個簡單的需求並不是看起來那么簡單。
  2. 自己寫的代碼,一定要多測試,一定一定要!!!
  3. 這次向線上的數據庫里插入了臟數據,以后遇到加了字段的需求,一定要多測試,多考量。

參考

mdn: Object.entries()
mdn: Object.keys()
mdn: Object.getOwnPropertyNames()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM