深入理解JavaScript系列—从原型到原型链
本文主要摘抄自冴羽大佬的blog。
1 | 原文作者:冴羽 |
学过Java的同学应该知道,有类继承的概念,对于JavaScript这种动态语言来说,不通过类继承的功能,即便在ES6里面引入了class关键字,也只是语法糖,基本值还是基于原型prototype实现的。
先介绍几个概念:
什么是对象
若干属性的集合
本文主要摘抄自冴羽大佬的blog。
1 | 原文作者:冴羽 |
学过Java的同学应该知道,有类继承的概念,对于JavaScript这种动态语言来说,不通过类继承的功能,即便在ES6里面引入了class关键字,也只是语法糖,基本值还是基于原型prototype实现的。
先介绍几个概念:
若干属性的集合
本文为了解决一下问题:
_proto_
(实际原型)和prototype
(原型属性)不一样!!!constructor
属性(原型对象中包含这个属性,实例当中也同样会继承这个属性)prototype
属性(constructor.prototype
原型对象)_proto_
属性(实例指向原型对象的指针)首先弄清楚几个概念:
若干属性的集合
Module模式是JavaScript编程中一个非常通用的模式,一般情况下,大家都知道基本用法,本文尝试着给大家更多该模式的高级用法。
首先我们来看看Module模式的基本特征:
关于Module模式,最早是由YUI的成员Eric Miraglia在4年前提出了这个概念,我们将从一个简单的例子来解释一下基本的用法(如果你已经非常熟悉了,请忽略这一节)。
良好的代码编写习惯,是减少bug,以及提升代码的可读性、扩展性都是非常有效的,这系列是在看汤姆大叔深入理解JavaScript系列做的一下总结。
修改bug的代价是沉重的,随着时间的推移,这代价也会随之加重,要想了解历史遗留的某个bug你需要:
还有,对于大项目来说,修复bug和写代码的不是同一个人,这代价可想而知,谁都想学习新技能,有谁愿意一直围着一堆bug,因此可维护代码是非常有必要的,可维护代码意味着:
this 关键字是一个非常重要的语法点。毫不夸张地说,不理解它的含义,大部分开发任务都无法完成。
首先,this 总是返回一个对象,简单说,就是返回属性或方法“当前”所在的对象。
1 | this.property |
上面代码中,this 就代表 property 属性当前所在的对象。
下面是一个实际的例子。
this是Javascript语言的一个关键字。
它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如,1
2
3function test(){
this.x = 1;
}
随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。
下面分四种情况,详细讨论this的用法。
这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。
请看下面这段代码,它的运行结果是1。
1 | function test(){ |