JavaScript对象

这也是一个目录

  • JavaScript对象
    • 标准对象
      • Date
      • RegExp
      • JSON
    • 面向对象
      • 创建对象
      • 原型继承
      • class继承

JavaScript对象

JS 中 __proto__ 和 prototype 存在的意义是什么?
JS 的 new 到底是干什么的?

标准对象

Date

本地读取时间。尤其注意月份范围是 0~11。

var now = new Date();
now;	// Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
now.getFullYear();	// 2015
now.getMonth();	// 5
now.getDate();
now.getDay();
now.getHours();	// 19, 24小时制
now.getMinutes();
now.getSeconds();
now.getMilliseconds();	// 875, 毫秒数
now.getTime();	// 1435146562875, 以number形式表示的时间戳

var d = new Date(2015, 5, 19, 20, 15, 30, 123);
d = Date.parse('2015-06-24T19:49:22.875+08:00');	// ISO 8601格式的字符串
													// 返回一个整数表示时间戳
d = new Date(Date.parse('2015-06-24T19:49:22.875+08:00'));	// 转换一下

再次注意使用 Date.parse() 时传入的字符串使用实际月份 01~12,转换为 Date 对象后 getMonth() 获取的月份值为 0~11。

时间戳是从1970年1月1日零时整的GMT时区开始到现在的毫秒数。

RegExp

挖坑。

JSON

了解更多JSON对象信息

每个 JSON 对象就是一个值,可能是一个数组或对象,也可能是一个原始类型的值。总之,只能是一个值,不能是两个或更多的值。

JSON 对值的类型和格式有严格的规定:

  • 复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。
  • 原始类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和 null(不能使用 NaN, Infinity, Infinityundefined)。
  • 字符串必须使用双引号表示,不能使用单引号。
  • 对象的键名必须放在双引号里面。
  • 数组或对象最后一个成员的后面,不能加逗号。

很多时候,我们需要用 JSON.stringify(zrd, foo, ' ') 把 JS 对象序列化为 JSON 格式是字符串。其中 foo 可以是一个数组,表示想输出的指定属性。或者也可以是一个函数,这样每个键值都会被处理:

function foo(key, value) {
     
	if (typeof(value) === 'string') {
     
		return value.toUpperCase();	// 键值变成大写
	}
	return value;	// 莫忘记return value
}

如果我们还想要精确控制如何序列化小达达,可以给 zrd 定义一个 toJSON() 的方法,返回 JSON 应该序列化的数据:

var zrd = {
     
	name: 'super da da',
	gender: 'male',
	toJSON: function () {
     
		return {
     
			mingzi: this.name,	// 可以更改属性名字和键值
			xingbie: this.gender,
			add: 111
		};
	}
};

或者,我们需要用 JSON.parse(s, foo) 把 JSON 格式的字符串反序列化为一个 JS 对象。其中 foo 是一个函数,用来转换解析出的属性:

function foo(key, value) {
     
	if (key === 'gender') {
     
		return 'female';
	}
	return value;
}

面向对象

和 JAVA,C++ 不同,JS 的面向对象不区分类和实例,而是通过原型(prototype)来实现面线对象编程。

JS 对每个创建的对象都会设置一个原型,指向它的原型对象。这样做的好处是可以多个对象实例共享某些方法,从而节省空间。

创建对象

我们可以用构造函数(constructor)来生成一个对象:

function Cat(name, color) {
     
	this.name = name;
	this.color = color;
}
Cat.prototype.eat = function () {
     
	return 'mouse';	// Cat.prototype的所有属性和方法都会被Cat构造的实例继承
}
var cat1 = new Cat('kiki', 'yellow');
var cat2 = new Cat('wiwi', 'red');

cat1.constructor === Cat;	// true
console.log(cat1 instanceof Cat);	// true
cat1.eat === cat2.eat;	// true
Cat.prototype.isPrototypeOf(cat1);	//true
cat1.hasOwnProperty('eat');	//false

原型继承

class继承

你可能感兴趣的:(javascript)