typeof 是一个一元运算符,用来获得变量的数据类型
其返回值有五个
undefined,boolean,number,string 以及 object.其中前面四个都好理解。而最后一个 object 是让程序员无从判断的,只笼统的返回了 object
在 javascript 中,如果函数没有声明返回值,那么会默认返回 undefined。
如果声明了返回值,那么实际返回什么就是什么。
undefined 从 null 派生,所以比较时返回 true
alert(undefined==null);//true
强制类型转换
在 javascript 中,有三种强制类型转换:
Boolean(value)
Number(value)
String(value)
- <html>
- <head>
- <script type="text/javascript">
- var num = Number(3);
- alert(num);
- var s = "hello";
- alert(Boolean(s));
- var s1 = String("hello");
- alert(typeof s1);
- var obj = new String("hello"); //这不是强制类型转换!
- alert(typeof obj);
- </script>
- </head>
- <body>
- </body>
- </html>
在 javascript 中,所有的对象都继承自 Object 对象。
用 new 的方式生成。
js 中有些方法是可以枚举出来的,有些是不行的。
用 js 内置方法可以判断,是否可以枚举出来。
- <html>
- <head>
- <script type="text/javascript">
- var object = new Object();
- for (var v in object) { console.log(v);
- }
- alert(object.propertyIsEnumerable("prototype")); //返回了false,表示没有可以枚举的属性,也意味着子对象相应的属性也是不可以枚举的
- </script>
- </head>
- <body>
- </body>
- </html>
枚举自定义类型的属性
- <html>
- <head>
- <script type="text/javascript">
- var member=function(name,age){
- this.name=name;
- this.age=age;
- }
- var m=new member("liudh",50);
- for(var v in m){
- console.log(v);
- //name
- //age
- }
- alert(m.propertyIsEnumerable("prototype"));//false
- //for(var v in window){
- // console.log(v);
- //}
- </script>
- </head>
- <body>
- </body>
- </html>
来源: