小注意1

{} 单单出现一对大括号时表示代码块
{
   var a = 2;
   console.log(a);
}
 
当大括号被赋值给一个变量时,表示对象的字面量
  var obj = {this.a=5};
 
当大括号外用小括号包裹时,也表示对象
({}).toString.call(new Array);  //等价于   Object.prototype.toString.call(new Array);
 
Function.toString()   // 返回  function Function(){ [native code] }        native code 是指内部代码,不能看
Array.toString()   // 返回  function Function(){ [native code] }
以此类推,RegExp,Number,Boolea等都是返回这个
如果是自己定义的函数,则不会显示native code  而是将整个函数显示出来
      function my(){
           console.log('自定义');
      }
      console.log(my.toString());   //返回   function my(){console.log('自定义')}
 
ps   var a = new Array();   a.toString();  // 因为数组里没东西,所以返回的是一个空字符串
 
window对象有一个window属性指向自己,也就是  window.window === window   //为真
 
伪数组的特点
       1.必须要有length属性
       2.如果length属性的值为0,那么这个对象没有任何元素(当然没有元素也可以是伪数组,比如arguments)
       3.如果length属性值不为0,那么这个对象一定有(length-1)为下标的属性
 
举例说明,怎么判断是否是伪数组
var a = {length:2,0:"xx",1:"xx"};  // 这是伪数组,length值为2,有2-1=1,有下标为1的值“xx”。
var b = {length:7,0:"xx",1:"xx",2:"xx"}  //不是伪数组,length值为7,没有下标为6的值。
 
 
 IE8中需要先把自定义伪数组转为真数组,才能借用apply
//在IE8中
var o = [];
var obj = {name:'su',age:23};
[].push.apply(o,obj);  //会报错,在ie8中,apply要真数组或内置数组才能起作用。
 
//将obj转为真数组
[].push.apply(o,[].slece.call(obj));  //slice方法对数组进行截取,然后返回一个新的数组。
 
 
null == undefined  //返回true
 
函数在不同情境下的不同称呼
     1.普通函数 
           var say = function(){...}  //函数声明,不会被提升
           function tell(){...}   //函数定义,会被提升
    2.方法,如果一个函数有了宿主,那么这个函数就叫做这个宿主的方法。
           var s = {
                  fn : function(){...};
                  };
    3.构造函数,如果一个函数被通过new的方式创建了对象,那么这个函数就叫做构造函数。
    4.回调函数,如果一个函数被当作参数传给另外一个函数,那么这个函数就叫做回调函数
 
 
原型链图示
在IE8中获取元素css样式使用   元素.currentStyle.height
高级浏览器中获取css样式使用  getComputedStyle(div).height
 
input.getAttribute('value'); //获取输入框中的初始值,当input.value='新值';时,获取的仍为初始值,不会更新
input.value; //获取input的value值
 
在IE8中,不支持indexOf,是指不支持数组的indexOf,字符串的indexOf是支持的
     var arr = [3,4,5];  arr.indexOf(3);//报错         var str = "1234";  str.indexOf(3);//可以正常返回   str.indexOf('3')效果等同。
 
String.trim和String.prototype.trim是不一样的。String.trim是把String当对象,trim是一个静态属性。另一个是原形链上的trim。字符串.trim(); 调用的是原形链上的trim。两者别搞混。
 
 
 
原文地址:https://www.cnblogs.com/sujianfeng/p/8662716.html