《JavaScript核心技术开发解密》读书笔记(四)

《JavaScript核心技术开发解密》读书笔记(一)
《JavaScript核心技术开发解密》读书笔记(二)
《JavaScript核心技术开发解密》读书笔记(三)
《JavaScript核心技术开发解密》读书笔记(四)
《JavaScript核心技术开发解密》读书笔记(五)
下面是第九章–面向对象
对象: 无序属性的集合,其属性可以包含基本值、对象或者函数。对象是由一系列无序的key-value对组成。
创建对象的方式有:使用new关键字来创建、通过字面量的形式创建、通过构造函数的方式创建。

new关键字在创建实例时经历如下过程:

  • 先创建一个新的、空的实例对象;
  • 将实例对象的原型,指向构造函数的原型;
  • 将构造函数内部的this,修改为指向实例;
  • 最后返回该实例对象。

原型链
原型对象其实也是普通对象,几乎所有的对象都可以是原型对象,也可以是实例对象,还可以是构造函数。
当我们随便创建一个函数add时,与它相关的原型链如下图:
在这里插入图片描述
对原型链上方法与属性的访问,与作用域的访问类似,也是一个单向查找的过程。虽然add方法与Object并没有直接的关系,但是它们用处于一条原型链上,因此add可以根据原型链的特点访问Object上的方法。

实例方法、原型方法、静态方法

  • 构造函数中的this指向的是新创建的实例,因此在往this上添加方法与属性时,其实是在往新创建的实例上添加属性与方法,所以构造函数中的方法可称之为实例方法
  • 通过prototype添加的方法,将会挂载到原型对象上,因此称之为原型方法
  • 挂载在构造函数上的方法称之为静态方法
function Foo() {
	this.bar = function () {
		return 'bar in Foo'; // 实例方法
	}
}

Foo.bar = function () {
	return 'bar in static'; // 静态方法
}

Foo.prototype.bar = function () {
	return 'bar in prototype'; // 原型方法
}

继承
继承分为有构造函数的继承与原型的继承两种。
父类对象:

var Person = function (name, age) {
	this.name = name;
	this.age = age;
}
Person.prototype.getName = function () {
	return this.name;
}
Person.prototype.getAge = function () {
	return this.age;
}

构造函数继承,通过call/apply来实现

var Student = function(name, age, grade) {
	// 通过call方法还原Person构造函数中的所有处理逻辑
	Student.call(Person, name, age);
	this.grade = grade;
}

原型继承,先封装一个方法,该方法会根据父类对象的原型创建一个实例,该实例即为子类对象的原型。

function create(proto, options) {
	// 创建一个空对象
	var tmp = {};

	// 让这个新的空对象成为父类对象的实例
	tmp.__proto__ = proto;

	传入的方法都挂载到新的对象上,新对象将作为子类对象的原型
	Object.defineProperties(tmp, options);
	return tmp;
}

使用该方法类实现原型的继承

Student.prototype = create(Person.prototype, {
	constructor: {
		value: Student
	},
	getGrade: {
		value: function () {
			return this.grade;
		}
	}
})
JavaScript核心技术 简介: 《JavaScript核心技术》对于各种浏览器、浏览器版本、JavaScript版本、DOM版本的介绍,有助于我们理解所遇到的各种新旧代码,使我们能够对这些代码做出正确的取舍。《JavaScript核心技术》还提供了一些使用JavaScript的最佳实践。无论是新手还是老手,这些如何正确使用JavaScript的经验都能帮助他们养成良好的编程习惯。《JavaScript核心技术》还介绍了一些调试和开发JavaScript的工具,这些工具无疑能够提高我们的开发效率。 《JavaScript核心技术》最后对于Ajax和几个流行的JavaScript库的介绍,无疑会开阔我们在JavaScript使用上的思路。 《JavaScript核心技术》是一本真正意义上的“新”,不仅介绍了最新的JavaScript知识和方向,还完全覆盖了当今Web开发中关于JavaScript的所有重要话题,它使用了大量实例代码,图文并茂地讲解了使用JavaScript的各个层次和领域的内容。它不是一本参考手册,但却是一本值得拥有的教程。 JavaScript核心技术 目录: 前言 第1章JavaScript初探 1.1规范和实现相互交织的历史 1.2跨浏览器的不兼容性和其他常见的JavaScript传说 1.3你能用JavaScript来做什么 1.4JavaScript初探:“HelloWorld!” 1.5JavaScript沙箱 1.6可访问性和JavaScript的最佳实践 第2章JavaScript数据类型与变量 2.1变量的标识 2.2作用域 2.3简单类型 2.4常量:有名称但不改变 2.5习题 第3章运算符和语句 3.1JavaScript语句的格式 3.2简单语句 3.3条件语句和程序流 3.4条件运算符 3.5逻辑运算符 3.6高级语句:循环语句 3.7习题 第4章JavaScript对象 4.1对象构造函数 4.2Number对象 4.3String对象 4.4正则表达式与RegExp 4.5有专门用途的对象:Date和Math 4.6JavaScript数组 4.7关联数组:不是数组的数组 4.8习题 第5章函数 5.1定义函数:细数所有方式 5.2回调函数 5.3函数和递归 5.4嵌套函数、函数闭包和内存泄漏 5.5作为对象的函数 5.6习题 第6章捕捉事件 6.1O级DOM上的事件句柄 6.22级DOM上的事件句柄 6.3产生事件 6.4习题 第7章表单与即时验证 7.1访问表单 7.2把事件附加在表单上:不同的方法 7.3选择列表 7.4单选按钮和复选框 7.5输入字段和JiT正则表达式 7.6习题 第8章沙箱及之上的cookie、连通性和隐私 第9章基础浏览器对象 第10章DOM:文档对象模型 第11章创建定制的JavaScript对象 第12章构建动态网页:在脚本中加入样式 第13章使用Ajax 第14章好消息:生动的程序库!令人惊异的Web服务!有趣的API! 附录习题答案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值