深入理解JavaScript系列—从原型到原型链

本文主要摘抄自冴羽大佬的blog。

1
2
原文作者:冴羽
原文地址:https://github.com/mqyqingfeng/Blog/issues/2


学过Java的同学应该知道,有类继承的概念,对于JavaScript这种动态语言来说,不通过类继承的功能,即便在ES6里面引入了class关键字,也只是语法糖,基本值还是基于原型prototype实现的。

先介绍几个概念:

什么是对象

若干属性的集合

阅读更多

深入理解JavaScript系列—constructor、prototype、_proto_ 详解

本文为了解决一下问题:

  • _proto_(实际原型)和prototype(原型属性)不一样!!!
  • constructor属性(原型对象中包含这个属性,实例当中也同样会继承这个属性)
  • prototype属性(constructor.prototype原型对象)
  • _proto_属性(实例指向原型对象的指针)

首先弄清楚几个概念:

什么是对象

若干属性的集合

什么是原型

阅读更多

深入理解JavaScript系列—全面解析Module模式

简介

Module模式是JavaScript编程中一个非常通用的模式,一般情况下,大家都知道基本用法,本文尝试着给大家更多该模式的高级用法。

首先我们来看看Module模式的基本特征:

  1. 模块化,可重用
  2. 分装了变量和函数,和全局的namespace不接触,松耦合
  3. 只暴露可用public的方法,其他私有方法全部隐藏

关于Module模式,最早是由YUI的成员Eric Miraglia在4年前提出了这个概念,我们将从一个简单的例子来解释一下基本的用法(如果你已经非常熟悉了,请忽略这一节)。

基本用法

阅读更多

深入理解JavaScript系列—编写高质量JavaScript代码的基本要点

良好的代码编写习惯,是减少bug,以及提升代码的可读性、扩展性都是非常有效的,这系列是在看汤姆大叔深入理解JavaScript系列做的一下总结。

书写可维护的代码(Writing Maintainable Code)

修改bug的代价是沉重的,随着时间的推移,这代价也会随之加重,要想了解历史遗留的某个bug你需要:

  • 花时间学习和理解这个问题
  • 花时间了解怎么解决这个问题

还有,对于大项目来说,修复bug和写代码的不是同一个人,这代价可想而知,谁都想学习新技能,有谁愿意一直围着一堆bug,因此可维护代码是非常有必要的,可维护代码意味着:

  • 可读性
  • 一致性
  • 可预测性
  • 看上去想一个人写的
阅读更多

深入理解JavaScript系列—this关键字

涵义

this 关键字是一个非常重要的语法点。毫不夸张地说,不理解它的含义,大部分开发任务都无法完成。

首先,this 总是返回一个对象,简单说,就是返回属性或方法“当前”所在的对象。

1
this.property

上面代码中,this 就代表 property 属性当前所在的对象。

下面是一个实际的例子。

阅读更多

Javascript的this用法

this是Javascript语言的一个关键字。
它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如,

1
2
3
function test(){
 this.x = 1;
}

随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。

下面分四种情况,详细讨论this的用法。

情况一:纯粹的函数调用

这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。

请看下面这段代码,它的运行结果是1。

1
2
3
4
5
function test(){
  this.x = 1;
  alert(this.x);
}
test(); // 1
阅读更多