JavaScript 对象
对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:
var person={firstname:"John", lastname:"Doe", id:5566};
上面例子中的对象 (person) 有三个属性:firstname、lastname 以及 id。
空格和折行无关紧要。声明可横跨多行:
var person={
firstname : "John",
lastname : "Doe",
id : 5566
};
firstname : "John",
lastname : "Doe",
id : 5566
};
对象属性有两种寻址方式:
实例
name=person.lastname;
name=person["lastname"];
name=person["lastname"];
声明变量类型
当您声明新变量时,可以使用关键词 "new" 来声明其类型:
var carname=new String;
var x= new Number;
var y= new Boolean;
var cars= new Array;
var person= new Object;
var y= new Boolean;
var cars= new Array;
var person= new Object;
实际编程中,这个特点通常用在判断语句。
// 错误的写法
if (v) {
// ...
}
// ReferenceError: v is not defined
// 正确的写法
if (typeof v === "undefined") {
// ...
}如果JavaScript预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。
undefinednullfalse0NaN""或''(空字符串)
布尔值往往用于程序流程的控制,请看一个例子。
if ('') {
console.log(true);
}
// 没有任何输出
上面代码的if命令后面的判断条件,预期应该是一个布尔值,所以JavaScript自动将空字符串,转为布尔值false,导致程序不会进入代码块,所以没有任何输出。
需要特别注意的是,空数组([])和空对象({})对应的布尔值,都是true。
if ([]) {
console.log(true);
}
// true
if ({}) {
console.log(true);
}
// true6. NaN、undefined、null分别代表什么?
- NaN
not a number的缩写,NaN 属性的初始值就是 NaN,和 Number.NaN 的值一样。
在编码很少直接使用到 NaN。通常都是在计算失败时,作为 Math 的某个方法的返回值出现的(例如:Math.sqrt(-1))或者尝试将一个字符串解析成数字但失败了的时候(例如:parseInt("blabla"))。
等号运算符(== 和 ===) 不能被用来判断一个值是否是 NaN。必须使用 Number.isNaN() 或 isNaN() 函数。 - undefined
undefined是指已经声明但未赋值的变量。
undefined是一个表示”无”的原始值,转为数值时为NaN。 - null
null是一个表示”无”的对象,转为数值时为0。
null表示空值,即该处的值现在为空。比如,调用函数时,不需要传入某个参数,这时就可以传入null。
查询null的类型,JS返回object。
7. typeof和instanceof的作用和区别?
typeof
typeof操作符返回一个字符串,指示未经计算的操作数的类型。
返回类型为题5涉及的几种数据类型。instanceof
instanceof运算符用来测试一个对象在其原型链构造函数上是否具有prototype属性。
语法:object instanceof constructor
它是用来判断constructor.prototype是否存在于object的原型链上,返回值为true/false。
如下:// 定义构造函数 function C(){} function D(){} var o = new C(); // true,因为 Object.getPrototypeOf(o) === C.prototype o instanceof C; // false,因为 D.prototype不在o的原型链上 o instanceof D; o instanceof Object; // true,因为Object.prototype.isPrototypeOf(o)返回true C.prototype instanceof Object // true,同上 C.prototype = {}; var o2 = new C(); o2 instanceof C; // true o instanceof C; // false,C.prototype指向了一个空对象,这个空对象不在o的原型链上. D.prototype = new C(); // 继承 var o3 = new D(); o3 instanceof D; // true o3 instanceof C; // true
遍历 JSON, 打印里面的值 (难度**)
var obj = {
name: 'hunger',
sex: 'male',
age: 28
}
for(var keys in obj){
console.log(keys+":"+obj[keys]);
};
// 输出 name: hunger, sex: male, age:28作者:nineSean
链接:https://www.jianshu.com/p/3ff0d0146e24
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
作者:nineSean
链接:https://www.jianshu.com/p/3ff0d0146e24
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文介绍了JavaScript中的对象定义、属性访问及变量类型的声明方法。同时探讨了JavaScript如何处理未定义值、空值及非数字值,并解释了typeof与instanceof运算符的区别。
465





