• 《你不知道的javascript上卷》读书笔记(kyle simpson 著,赵望野、梁译)


    一、关于this篇:

    1.this实际上是在函数被调用时发生的绑定,它指向什么完全取决于函数在哪里被调用

    2.this优先级:new>显示绑定>隐式绑定>默认绑定。

    3.如果把null或undefined作为this的绑定对象传入call、apply或者bind,这些值在调用时会被忽略,实际应用的是默认绑定规则

    eg:

    function foo(){
      console.log(this.a);
    }

    var a=2;

    foo,bind(null);  //2

    4.将arguments(类数组)变为数组

    (1)Array.prototype.slice.apply(arguments)     或   [].slice.apply(arguments)  或  new Array().slice.apply(arguments)

    (2)es6扩展运算符...

    function foo(...arg){
    console.log(arg);
    }


    foo.apply(null,[155,2,3,4,56,7]);   或    foo(155,2,3,4,56,7)
    二、对象篇

    1.对象深拷贝与浅拷贝

    (1)浅拷贝(还是引用obj对象)

    obj={name:'min'}

    obj2=Object.assign({},obj)

    (2)深拷贝(完完全全复制)

    obj={name:'min'}

    obj2=Object.assign({},JSON.parse(JSON.stringify(obj)))

    2.对象属性描述

    var myObj={};

    Object.defineProperty(myObj,"a",{

      value:2,

      writable:true,

      configurable:true,

      enumerable:true

    });

    不变:

    (1)对象常量(不可修改、重定义、删除)

    var myObj={};

    Object.defineProperty(myObj,"a",{

      value:2,

      writable:false,

      configurable:false

    });

    (2)禁止扩展

    var myObj={a:2};

    Object.preventExtensions(myObj);

    myObj.a=3;  

    myObj.a;    //undefined (严格模式下:TypeError)

    (3)密封(禁止扩展基础上加:configurable:false(不可重配、不可删除))  Object.seal(myObj)

    (4)冻结(密封基础上加:writerble:false)Object.freeze(myObj);

    3.对象的set和get

    4.检查对象中属性是否存在

    eg:obj={a:2}

    (1)"a" in obj;/*检查属性“a”是否在obj的对象或是原型链上*/

    (2)obj.hasOwnProperty("a");  /*只检查"a"是否在obj对象上(不含原型链)*/

    (3)obj.propertyIsEnumerable("a");/*检查“a”是否在obj对象上(不含原型链)且满足 enumerable=true*/

    (4)Object.keys(obj);/*obj所有可枚举属性*/

    (5)Object.getOwnPropertyNames(obj);/*所有属性含不可枚举的*/

  • 相关阅读:
    系统程序员成长计划内存管理(一)
    系统程序员成长计划工程管理(二)
    嵌入式GUI ftk0.3发布
    嵌入式GUI FTK设计与实现目录
    嵌入式GUI FTK设计与实现分层视图
    sql 临时表的问题
    解惑XP系统IIS无法添加映射之诡异现象
    C#高质量缩略图
    C#图片处理之另存为压缩质量可自己控制的JPEG
    SQL注入
  • 原文地址:https://www.cnblogs.com/miaSlady/p/9576455.html
Copyright © 2020-2023  润新知