class与class的继承
class Point{
constructor(x,y){
this.x = x;
this.y = y;
}
toString(){
return '(' + this.x + ',' + this.y + ')';
}
}
var foo = new Point(2,3);
console.log(foo.x);
// es6类完全可以看作构造函数的另一种写法
// type of "function"
// Point === Point.prototype.constructor true
// 构造函数的prototype属性在es6的"类"上继续存在,事实上类的所有方法都定义在类的 prototoye 属性上
// 在类的实例上调用方法,其实就是调用类原型上的方法
// 类的内部定义的所有方法都是不可枚举的
// 类和模块的内部默认使用严格模式
// constructor是类的默认方法通过new命令生成实例对象时自动调用该方法.
// 一个类必须有constructor方法,如果没有显式定义,默认添加一个空的constructor方法
// 类必须使用new来调用,否则报错
// 与es5一样实例的属性除非显式定义在其本身(即this对象上),否则都是定义在原型(即class)上
// class表达式
const myClass = class Me{}
const foo = class{}; // 省略类名
// 类不存在变量提升 (与继承有关)
// 必须在定义后使用,否则报错
// this指向
// 类的方法内部如果含有this,它将默认指向类的实例
// class的取值函数getter和存值函数setter
// class的静态方法
// 在一个方法前加上static关键字就表示该方法不会被实例继承,而是直接通过类调用,称为静态方法
// 父类的静态方法可以被子类继承,静态方法也可以从super对象上调用
// class 实例属性/静态属性
// 在实例属性写法前面加上static关键字就可以了
// class的继承
// class通过extends实现继承
// super关键字表示父类的构造函数
// 子类必须在constructor方法中调用super方法,否则新建实例会报错,这是因为子类没有自己的this对象,而是继承父类的this对象
class point {}
class colorPoint{
constructor() {
super(); // 调用父类constructor方法
}
}
// 在子类的构造函数中只有调用super之后才可以使用this关键字,否则报错
// super关键字
// super关键字及可以当作函数使用,也可以当作对象使用
// super作为函数使用时,代表调用父类的构造函数,只能在子类构造函数中使用,其他地方会报错
// 第二种情况,super作为对象时在普通方法中指向父类的原型对象,在静态方法中指向父类
// super调用父类的方法时,super会绑定子类的this
// 类的prototype属性和__proto__属性
// class作为构造函数的语法糖同时有prototype属性和__proto__属性,因此同时存在两条继承链
// 子类的__proto__属性表示构造函数的继承,总是指向父类
// 子类的prototype属性的__proto__属性表示方法继承,总是指向父类prototype属性
class与class的继承的更多相关文章
- javaScript的原型继承与多态性
1.prototype 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉 ...
- JavaScript的继承实现方式
1.使用call或apply方法,将父对象的构造函数绑定在子对象上 function A(){ this.name = 'json'; } function B(){ A.call(this); } ...
- javascript中的继承与深度拷贝
前言 本篇适合前端新人,下面开始...... 对于前端新手来说(比如博主),每当对js的对象做操作时,都是一种痛苦,原因就是在于对象的赋值是引用的传递,并非值的传递,虽然看上去后者赋值给了前者,他们就 ...
- 谈谈一些有趣的CSS题目(四)-- 从倒影说起,谈谈 CSS 继承 inherit
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
- JS继承类相关试题
题目一: //有关于原型继承的代码如下:function Person(name) { this.name = name;}Person.prototype = { getName : f ...
- JS继承之寄生类继承
原型式继承 其原理就是借助原型,可以基于已有的对象创建新对象.节省了创建自定义类型这一步(虽然觉得这样没什么意义). 模型 function object(o){ function W(){ } W. ...
- JS继承之借用构造函数继承和组合继承
根据少一点套路,多一点真诚这个原则,继续学习. 借用构造函数继承 在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术( ...
- JS继承之原型继承
许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.如前所述,由于函数没有签名,在ECMAScript中无法实现接口继承.ECMAScript只支 ...
- 深入浅出JavaScript之原型链&继承
Javascript语言的继承机制,它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instanc ...
- 如果你也会C#,那不妨了解下F#(7):面向对象编程之继承、接口和泛型
前言 面向对象三大基本特性:封装.继承.多态.上一篇中介绍了类的定义,下面就了解下F#中继承和多态的使用吧.
随机推荐
- default(T);
在泛型类型中,由于泛型类型即可以是引用类型也可以是值类型,所以不能用null来表示默认值.这里通过default来进行.引用类型的default将泛型类型初始化null,值类型的default将泛型类 ...
- C# copy folder and files from source path to target path
static void Main(string[] args) { string sourceDir = @"E:\SourcePath"; string destDir = @& ...
- golang 自动下载所有依赖包
go get -d -v ./... -d标志只下载代码包,不执行安装命令: -v打印详细日志和调试日志.这里加上这个标志会把每个下载的包都打印出来: ./...这个表示路径,代表当前目录下所有的文件 ...
- postgreSQL安装教程 Windows
Windows 上安装 PostgreSQL 这里使用 EnterpriseDB 来下载安装,EnterpriseDB 是全球唯一一家提供基于 PostgreSQL 企业级产品与服务的厂商. 下载地址 ...
- Hibernate 框架 -HQL 语法
HQL ( Hibernate Query Language ) 查询语言是面向对象的查询语言,也是在 Hibernate 中最常见的.其语法和 SQL 语法有一些相似,功能十分强大,几乎支持除特殊 ...
- Android 项目优化(一):项目代码规范优化
项目代码规范为主要包含:类,常量,变量,ID等命名规范:注释规范:分包规范:代码风格规范. 项目代码规范是软件开发过程中非常重要的优化环节. 目前的开发社区提供了很多的开发规范文档,阿里巴巴推出了&l ...
- 速查 objc中可变集合和不可变集合的遍历性能
次数 : 5,000,000 NSMutableArray //0.131999/0.116085/0.112128 NSArray //0.116842/0.111675/0.108623 NSMu ...
- source insight 3 常用设置
总结了一些source insight的一些常用设置,这些设置需求因人而异,自己用的顺手的才是最好的. 1.括号配对高亮“在前括号左侧,后括号左侧”双击鼠标左键,可以选定匹配括号和其中内容(<& ...
- 获取Tekla属性方式
XmlTextWriter xmlTextWriter = new XmlTextWriter((TextWriter) stringWriter); xmlTextWriter.Formatting ...
- Oracle ASM无法识别扩展分区的磁盘设备
在linux 环境下,我们一般通过udev或者asmlib来绑定磁盘分区作为ASM的候选存储单元.在使用udev的情况下,一般只要我们可以看到被绑定的磁盘的设备,并且这些设备的属主和权限没有问题,AS ...