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。

        

检测自定义类型时也使用instanceof.

In

判断对象属性是否存在时使用in,联想for……in……。

Console.info(‘propertyName’ in objectName).

不要用obj[key],这样取得的是属性值,即使判断它是否等于null,也不能判断它是否有个属性值等于null.

数组检测

Sample Code:

function isArray(value) { 
	if(typeof Array.isArray === "function") {
		return Array.isArray(value);
	}else {
		return Object.prototype.toString.call(value) === "[Object Array]";
	}
}

The main difference between apply and call:

‘Apply’ lets you invoke the function with arguments as an array;

‘Call’ requires the parameters be listed explicity.

Sample Code:

function theFunction(name, profession) {
    alert("My name is " + name + " and I am a " + profession + ".");
}
theFunction("John", "fireman");
theFunction.apply(undefined, ["Susan", "school teacher"]);
theFunction.call(undefined, "Claude", "mathematician");

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值