摘要:
class Vehicle { constructor() { this.engines = 1 } ignition () { console.log('Turning on my engine'); } drive () { this.ignition(); console.log('Steer 阅读全文
摘要:
在面向类的语言中,可以先定义一个类,然后定义一个继承前者的类。后者通常被称为 “子类”,前者通常被称为 “父类”。这些术语显然是类比父母和孩子。 定义好一个子类之后,相对于父类来说它就是一个独立并且完全不同的类。子类包含父类行为的原始副本,但是也可以重写所有继承的行为甚至定义新行为 思考下面关于类继 阅读全文
摘要:
“类”和“实例”的概念来源于房屋建造。 建筑蓝图只是建筑计划,它们并不是真正的建筑,我们还需要建筑工人来建造建筑。建筑工人会按照蓝图建造建筑。实际上,他会把规划好的特性从蓝图中复制到现实世界的建筑中 建筑成为了蓝图的物理实例,本质上就是对蓝图的复制。 如果你想打开一扇门,那就必须接触真实的建筑才行- 阅读全文
摘要:
在相当长的一段时间里,JS 只有一些近似类的语法元素,比如 new 和 instanceof,不过后来的 ES6 中新增了一些元素,比如 class 关键字。这是不是意味着 JS 中实际上有类呢?简单来说: 不是 由于类是一种设计模式,所以可以用一些方法近似实现类的功能。为了满足对于类设计的最普遍需 阅读全文
摘要:
好的设计就是把数据以及和它相关的行为打包(封装)起来,这在正式的计算机科学中有时被称为数据结构 用来表示一个单词或者短语的一串字符通常被称为字符串。字符就是数据。但是你关心的往往不是数据是什么,而是可以对数据做什么,所以可以应用在这种数据上的行为(计算长度,添加数据,搜索等)都被设计为 String 阅读全文
摘要:
1、是这样的,不同的对象的底层都表示为二进制,在 js 中二进制前三位都为 0 的话会判断为 object 的类型, null 的二进制是全 0,自然前三位也是0所以执行 typeof 时会返回 ‘object’ 2、 var myArray = [1,2,3]; var it = myArray[ 阅读全文
摘要:
for 循环可以遍历数组 var myArray = [1,2,3]; for(var i=0; i<myArray.length; i++) { console.log(myArray[i]) } // 1 2 3 ES5 增加了数组的辅助迭代器,包括 forEach(...)、every(... 阅读全文
摘要:
myObject.a 的属性访问返回值可能是 undefined,但是这个值有可能是属性中存储的 undefined,也可能是因为属性不存在所以返回 undefined var myObject = { a: 2 } ('a' in myObject); // true ('b' in myObje 阅读全文
摘要:
对象默认的[[Put]] 和 [[Get]] 操作分别可以控制属性值的设置和获取 可以使用 getter 和 setter 部分改写默认操作,但是只能应用在单个属性上。当你给一个属性定义 getter、setter 或者两者都有时,这个属性会被定义为 “访问描述符”。对于访问描述符来说,会忽略它们的 阅读全文
摘要:
[[Get]] 对象访问在实现上有个微妙却非常重要的细节 var myObject = { a: 2 } myObject.a; // 2 myObject.a 是一次属性访问,在实现上,myObject.a 在 myObject 上实际上实现了 [[Get]] 操作(有点像函数调用:[[Get]] 阅读全文