本周学习总结(原生)

访问不存在的方法,会报错

class Dog{
    constructor(name) {
        this.name=name;
    }
}
Dog.add(); //会报错
//TypeError: Dog.add is not a function

引入的模块是只读的,不能被修改

// counter.js
let counter=10;
export default counter;

//index.js
import myCounter from './counter.js'
myCounter+=1;
console.log(myCounter)//所有报错

delete操作符

delete操作符返回一个布尔值:true 删除成功,否则返回false
但是通过 var, const 或 let 关键字声明的变量无法用 delete 操作符来删除。
主要删除对象的属性

defineProperty

可以给对象添加一个新属性,候着修改已经存在的属性,而我们使用defineProperty 方法添加了一个属性之后,属性默认为不可枚举(notenumerable),所有无法通过Object.keys() 显示

import

import 命令是编译阶段执行,就是导入的模块先运行,而导入模块的文件后执行

区别

使用require() 运行时执行

模块化

传统的命名空间

(function(w){
    w.b=2
})(window)

ES6模块化

// math.js
export let val = 1
export function add () {
    val++
}
//另一种
module.exports=add;
// test.js
import { val, add } from './math.js'
console.log(val) // 1
add()
console.log(val) // 2

面试

https://www.cxymsg.com/guide/preface.html#%E5%A4%A7%E9%87%8F%E7%9A%84%E8%BF%87%E6%97%B6%E9%97%AE%E9%A2%98

排序

console.log('cbga'.split``.sort())

异步问题

function takeLongTime() {
  return new Promise(res => {
    setTimeout(function () {
      res();
      console.log(1)
    }, 1000)
  })
}

async function test() {
  await takeLongTime();
  console.log(2)
}

strman 字符串操作

const appendArray = (value, appends) => {
  if (appends.length == 0) {
    return value
  }
  return value + appends.join('')
}
const append = (value, ...append) => appendArray(value, append)

console.log(appendArray('a', ['x', 'g', 'd'])) //axgd
console.log(append('a', 'x', 'c', 'b')) //axcb


const substr = (value, start, length) => value.substr(start, length);
const at = (value, index) => substr(value, index, 1);

console.log(substr('abcder', 0, 1)) //a
console.log(at('abcder', 2)) // c

const base64Encode = value => Buffer.from(value)
  .toString('base64');
const base64Decode = value => Buffer.from(value, 'base64')
  .toString();

console.log(base64Encode('strman')) // 'c3RybWFu'
console.log(base64Decode('c3RybWFu')) // strman

// 编码 
// 每一个字符的长度是16,=>charCodeAt(0)=>转成二进制toString(2)=>padStart多了的填充 0
//合并join
const encode = (value, length, base) => value.split('')
  .map(val => val.charCodeAt(0)
    .toString(base)
    .padStart(length, '0'))
  .join('');
console.log(encode('abc', 16, 2))

//反码
const decode=(value,length,base)=>{
  let i=0,arr=[]
  while (i < value.length / length) {
    arr.push(value.slice(i*16,16+i*16))
    i++
  }
  return arr.map(val=>String.fromCharCode(parseInt(val,base))).join('')
}
console.log(decode('000000000110000100000000011000100000000001100011', 16, 2))
//abc

### encodeURL
let test1="http://www.w3school.com.cn/My我是谁哈哈哈"
console.log(encodeURI(test1))
//http://www.w3school.com.cn/My%E6%88%91%E6%98%AF%E8%B0%81%E5%93%88%E5%93%88%E5%93%88

### decodeURI
let test2 = 'http://www.w3school.com.cn/My%E6%88%91%E6%98%AF%E8%B0%81%E5%93%88%E5%93%88%E5%93%88';
console.log(decodeURI(test2))

const truncate = (str, length, _append) =>str.substr(0,length-_append.length)+_append;
const title = 'A Javascript string manipulation library.'
console.log(truncate(title, 16, '...'))
//A Javascript ...

改变嵌套条件

const printBlack = () => console.log(1);
const printRed = () => console.log(2);
const printBlue = () => console.log(3);
const colorObj = {
  black: printBlack,
  red: printRed,
  blue: printBlue,
};
let item='red';
if (item in colorObj) {
  colorObj[item]()  //2
}

q.js

//Array.prototype.slice
const array_indexOf = (value) => {
    return function (item) {
        for (let i = 0; i < value.length; i++) {
            if (item == value[i]) {
                return i
            }
        }
        return -1
    }
}
console.log(array_indexOf(['a', 'b', 'c', 'd', 'f', 't'])('t'))

// Object.keys   Object.hasOwnProperty
const object_keys = object => {
    const keys = []
    for (let key in object) {
        keys.push(key)
    }
    return keys
}
console.log(object_keys({name: 'xxx', age: 12}))
// [ 'name', 'age' ]

let a = Promise.all([Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)])
a.then(res => {
    console.log(res)
})

isFinite()

如果number是NaN,或者正负无穷大的数,则返回false

..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

posted @ 2019-09-01 18:11  猫神甜辣酱  阅读(506)  评论(0编辑  收藏  举报