日期:2014-05-16  浏览次数:20387 次

Javascript杂记

eval()

参数是一个字符串,eval会将传入的字符串当作代码来执行。使用Function函数依然可以做到这点,setTimeout,setInterval也可以。尽量不要使用这些,两个set...函数要用也要使用函数实行,不要使用字符串。严格模式下不能使用eval来创建变量和函数,非严格模式下可以

eval(“alert(‘Hi!’)”);
var myfunc = new Function(“alert(‘Hi!’)”);

原始包装类型

Number,Boolean,String.使原始值具有对象般的行为。

var name = "dfdsfdsfds"; 
console.log(name.toUpperCase()); //在这句语句表象的背后js引擎创建了String类型的实例,紧跟着就销毁。
var name = "dfdsfdsfds"; name.author = true; console.log(name.author);//在console语句时,对象实例已经销毁。

原始值本身不具备对象特性,例如:

1.toString() // undefined;

Var a = 1; a.toString();

for……in

   用来遍历对象属性,同样还会遍历从原型继承来的属性,所以遍历自定义对象时,使用hasOwnPrpperty()方法来为for……in循环过滤出实例属性。

var prop;
for(prop in object){
  If( object.hasOwnProperty(prop)){
       Console.log(“Property name is  ” + prop);
       Console.log(“Property value is  ” + object[prop]);
  }
}

typeof

Js中5种原始类型分别是 字符串、数字、布尔值、null、undefined.

typeof运算符之后返回 “string”,”number”,”boolean”,”undefined”,”objet”.

判断null是使用!== 或者 ===,避免用typeof来检测null,因为会返回object.

instanceof

js中除了原始值都是引用值,js中内置的引用类型:Object、Array、Date、Error.   typeof都会返回object,所以分清楚这几种类型,需要使用instanceof.

If(value instanceof Date/RegExp..),因为每个对象都是继承自Object,所以任何类型都会返回true。

        

检测自定义类型时也使