JavaScript盲点总结

待解问题:
1.JavaScript中in操作符的使用
2.在JavaScript中哪些对象是有length属性的
3.js中underfined === underfined,null===null,NaN===NaN吗
4.javascript中的操作符+,-,in,instanceof,typeof,new等
5.一般对象拥有的属性和方法
6.prototype 到底是什么
7.Arguments对象
8.hasOwnProperty和isPrototypeOf的区别

简单总结:

1)+操作符:+除了作为加法和连接符外,还可以作为一元运算符使用,比如+5,+”3”,+”33dd”,+obj等,它的作用是将后面尽可能的转换为数字,如果不能则为NaN。在underscore.js中,判断类数组的方式是一种鸭式类型obj.length === +obj.length。

2)-操作符:和+类似,除了作为减法使用,也可以作为一元运算符使用

3)in操作符常用方式有两种,一个是判断if(‘Lastname’ in myObject){},该对象是否有该属性,另一个是遍历for(var key in myObject),一般不建议数组这样遍历,为什么不知道?in操作符需要注意的点:in的右边必须是一个对象,左边是对象的属性,该属性如果不是固有属性(如length),必须引号括起来;如果是固有属性可以直接写。如果右边的对象是数组对象,左边必须是数组的下标。

4)typeof:typeof是一元操作符,返回值是字符串。typeof一般只能返回如下几个结果:number,boolean,string,function,object,undefined。对于Array,Null等特殊对象使用typeof一律返回object,这正是typeof的局限性。在JavaScript语言精粹一书中也同样指出,这样是没有任何意义的。这本书中也给出了更好的判断数组的方式Object.prototype.toString.call(arr)====’[object Array]’,这种方式也在许多框架中见到。

5)instanceof:

6) new:

7) js中underfined === underfined,void===void,NaN===NaN吗
①void 0 === void 1 为true,underfined === underfined 成立
②var a=null,b=null;a===b为true, null===null成立
③+”a” === +”a”为false,NaN===NaN不成立

8)hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。
isPrototypeOf是用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false。

参考资料:
arr.length === + arr.length鸭式讨论
http://segmentfault.com/q/1010000000510887

js如何判断一个对象是不是数组(其中指出instanceof 判断数组的局限性)?
http://www.nowamagic.net/librarys/veda/detail/1250

JavaScript中in操作符
http://blog.csdn.net/slalx/article/details/5910587

javascript:typeof与instanceof区别
http://www.cnblogs.com/jikey/archive/2010/05/05/1728337.html

JavaScript instanceof 运算符深入剖析
http://www.ibm.com/developerworks/cn/web/1306_jiangjj_jsinstanceof/

附录(摘自网络):
######**typeof**######
typeof(1): number
typeof(NaN): number
typeof(Number.MIN_VALUE): number
typeof(Infinity): number
typeof(“123”): string
typeof(true): boolean
typeof(window): object
typeof(Array()): object
typeof(function(){}): function
typeof(document): object
typeof(null): object
typeof(eval): function
typeof(Date): function
typeof(sss): undefined
typeof(undefined): undefined

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值