zoukankan      html  css  js  c++  java
  • 《你不知道的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);/*所有属性含不可枚举的*/

  • 相关阅读:
    LeetCode15 3Sum
    LeetCode10 Regular Expression Matching
    LeetCode20 Valid Parentheses
    LeetCode21 Merge Two Sorted Lists
    LeetCode13 Roman to Integer
    LeetCode12 Integer to Roman
    LeetCode11 Container With Most Water
    LeetCode19 Remove Nth Node From End of List
    LeetCode14 Longest Common Prefix
    LeetCode9 Palindrome Number
  • 原文地址:https://www.cnblogs.com/miaSlady/p/9576455.html
Copyright © 2011-2022 走看看