观察者模式、promise基础

2019-04-28  本文已影响0人  江南之城

1.观察者模式

1、我们需要牢记两点:①--proto--和constructor属性是对象所独有的;② prototype属性是函数所独有的,因为函数也是一种对象,所以函数也拥有--proto--和constructor属性。
2、--proto--属性的作用就是当访问一个对象的属性时,如果该对象内部不存在这个属性,那么就会去它的
--proto--属性所指向的那个对象(父对象)里找,一直找,直到-proto-属性的终点null,然后返回undefined,通过--proto--属性将对象连接起来的这条链路即我们所谓的原型链。
3、prototype属性的作用就是让该函数所实例化的对象们都可以找到公用的属性和方法,即f1.--proto-- === Foo.prototype。
4、constructor属性的含义就是指向该对象的构造函数,所有函数(此时看成对象了)最终的构造函数都指向Function。
https://blog.csdn.net/cc18868876837/article/details/81211729

2.promise基础

 const promise = new Promise((resolve,reject)=>{
      console.log(1)
      resolve()
      console.log(2)
})
promise.then(() =>{
    console.log(3)
})
打印结果为: 1 2 3
// 解析:由于resolve()没有阻断代码的功能
    async function async1() {
        console.log( 'async1 start' )
        await async2()
        console.log( 'async1 end' )
        //await 后面的代码 是在async2中的then后面执行
    }
    async function async2() {
        console.log( 'async2' )
    }
    console.log( 'script start' )
    setTimeout( function () {
        console.log( 'setTimeout' )
    }, 0 )
    async1();
    new Promise( function ( resolve ) {
        console.log( 'promise1' )
        resolve();
    } ).then( function () {
        console.log( 'promise2' )
    } )
    console.log( 'script end' )
 运行结果如下:
     script start
     async1 start
     async2
     promise1
     script end
     promise2
     async1 end
     setTimeout
详解https://segmentfault.com/a/1190000017224799
async function testAsync() {
    return "hello async";
}
const result = testAsync();
console.log(result);
//打印结果为是一个 Promise 对象  Promise {<resolved>: "hello async"}
当写成如下:
testAsync().then(v => {
    console.log(v);    // 输出 hello async
});

详解链接:https://segmentfault.com/a/1190000007535316

3.node

java 多线程 (不停的切换执行上下文
切换的很快)并发操作同一个文件 锁的概念

node可以直接访问global 并且没有window的概念。
//全局属性global
//还有一些属性 exports module require __dirname __filename

1、node实现模块化(优点:命名冲突 代码方便维护 方便协作 依赖关系)。
2、浏览器中实现模块化 var obj = {a} 不能完全解决命名冲突的、调用过长、单例
3、自执行函数来实现 seajs cmd requirejs amd(异步 没人用)
4、commonjs 规范 通过文件读取(utf8)实现了模块化 1)文件即模块 2)定义了导出方式 module.exports exports 3)定义了导入方式 require
// module.exports = xxx
//exports.a = 'hello'
//

//让字符串执行?1、 eval / new Function 在浏览器中
let hello = 'zf';
eval(''console.log(hello)); //eval执行 有依赖关系
//new Function
var b=3;
let str = 'let a=1;return a+b';
let newFn = new Function('b',str);
console.log(newFn(3)) 
2、node内置模块  内置/核心   文件模块/自定义模块  第三方模块
let vm = require('vm');// node中执行字符串 可以采用vm模块
//他可以提供一个沙箱环境 运行代码  干净的环境
let hello= 'zf'
vm.runInThisContext("console.log('hello')")

//处理文件路径的 basename extname dirname join resolve

4.other

  v-if 控制的是dom   v-show控制的是样式   注:v-show不支持<template></template>


上一篇 下一篇

猜你喜欢

热点阅读