js 知识总结

js核心知识总结:
 基本类型: number boolean undefined string
1.一切都是对象,对象是属性的集合。引用类型都是对象(array、null、function()、集合、)
2。值类型用typeof来判断,引用类型用instanceof来判断
3.对象都是由函数来创建的,每一个函数都有一个属性叫prototype属性,它的值又是一个             对象(也可以叫做函数) 有一个constructor属性,指向函数本身
 函数为什么有时候也可以称之为对象?
   function a () {
    var a = ""
}
  var obj = new a();
 console.log(obj.construcror);    //function a() { var a="'}
 console.log(a.constructor);       //function Function(){ [native code] }
 
 
 
4.每一个由函数new出来的新对象,该对象的_proto_===函数的prototype
所以function的_proto指向函数本身
5.js中继承是通过原型链来寻找的,如果一个对象没有定义一个属性,那么就会顺着它的_proto_原型链来查找创建它的函数中是否有该属性,依次往上找,直到找到为止。
6.如果要在对象的原型属性prototype中添加某一个属性,最好要判断一下该属性是否存在,然后再添加。如:if(typeof fu(函数名称).prototype.constructor(属性) !=='function'){
}
7.执行上下文:
(1)对待变量时                 
         console.log(a);    //a is not defined 
         
         var a ;
         console.log(a);     //  undefined  
 
         console.log(a);      //undefined  
         var a = 10;
   
   无论变量是否申明和赋值,程序执行的时候都是先根据上下文执行 执行申明变量的语句,然后再一次读出程序。而赋值也是根据先后顺序来执行
  
(2)  对待this时
     console.log(this);    //window{top:Window, window:Wind,}
      针对this时,不仅直接申明它并且也赋值。
(3)
       console.log(f1);     //function f1 ( ) { }       为什么???
       function f1 () { };     //函数申明
 
      console.log(f2);     //undefined
       var f2 = function() { }   //函数表达式
       
 全局 代码的上下文环境数据内容为:
  普通变量(函数表达书)                       声明 (默认赋值为undefined)
    var a =0;
 var fu = function( ) { };
     
    函数声明 ,比如 function ( ) { }            赋值
    this                                                    赋值
     
      如果代码段是函数体,那么在此基础上需要加上:
       参数                                       赋值
       arguments                             赋值
      自由变量的取值作用域               
  
 
   虚构函数一般用于作为函数的参数传递时:如:
   function fn (bbb){
         bbb();          
   }
  fn( function() {
      console.log(aaaa);
  })
 
 
 一个对象obj 是由其根对象Object  new出来的   //Object返回 function Object() {native,code },执行后返回 Object {}对象
 普通函数
  一个普通函数实际上也是由根函数Function() new出来的       //Function返回  function Function () {}  ,执行后返回 function anonyous () {}
  
  构造函数中this 指的是new出来的那个对象,而普通函数中this指的 是window对象。
  作用域是由函数把它分割成上下级,自由变量是顺着作用域链来找的,自由变量的取值是取决于创建函数作用域中的变量值而不是调用函数的作用域中的变量值。 如:
  
 
   function fn () {    
    var x=10;
     function bbb (max) {
        if(max > x)
        console.log(max);   15
   }
      return bbb;
}
  var a1 =fn();
   a1(15);
 
 
 
    var a=10;
 function fn () {
      var b=5;
   function bb () {
     console.log(a+b);    //15
  }
    return bb;
}
   var a1 = fn();
     b=100;
   a1();
     
 函数归根揭底也是由Function(){}函数创建出来的
  function f1(x,y) {
     return (x+y);
}
 
 第二种写法   var f1 =new Function("X","Y","return x+y");
posted @ 2017-04-10 16:28  wangshiqiao  阅读(197)  评论(0)    收藏  举报