es6 class的基础语法,es6 class继承/ es5 call继承描述/使用apply比较完美继承Array的方法 sort倒序排序console.table()表格生成

//基础语法function People(name,email){
    name,
    email
}
class User{
    constructor(name,email){
        this.name = name;
        this.email = email;
    }
    getinfo(){
        console.log(this.name);
    }
    static description(){
        console.log(‘I am description --static‘);
    }
    set urls(values){
        console.log(values);
        this.urlsvalue = values;
    }
    get urls(){
        return `hello urls ${this.urlsvalue}`;
    }
}
//class 实现继承(附带es5继承方法)
class Animal {
    constructor(name){
        this.name = name;
        this.belly = [];
    }
    eat(food){
        this.belly.push(food);
    }
    speak(){
        console.log(‘I am lucky‘)
    }
}
class Dog extends Animal{
    constructor(name,age){
        super(name);
        this.age = age;
    }
    bark(){
        console.log(‘bark bark!‘);
    }
    speak(){
        console.log(‘bark bark I am lucky‘)
    }
}
const lucky = new Dog(‘lucky‘,2)

console.log(lucky.speak()) //bark bark I am lucky   同个方法会覆盖父类方法

// es5的继承方式比较复杂
// start
// function Dog(name,age){
//     Animal.call(this,name,age);//在子类的构造函数当中,首先会调用基类的构造函数,es6中直接super()即可。
//     this.name = name;
//     this.age = age;
// }
// Dog.prototype = new Animal(); //Dog原型对象被指向Animal的实例,constructor会被改变,所以需要下面声明下construcor 指向Dog
// Dog.prototype.constructor = Dog;
// end
 
//es5使用apply比较完美继承Array的方法 start

function MyArray(){
  Array.apply(this,arguments);
}
MyArray.prototype = new Array()
MyArray.prototype.constructor = MyArray
const colors = new MyArray();

colors[0] = ‘red‘;
console.log(colors.length);

colors.length = 0;
console.log(colors[0]);
//es5使用apply比较完美继承Array的方法 end
class movieCollection extends Array{
	constructor(name,...values){
		super(...values);
		this.name = name
	}
	topRated(limit = 10){
		return this.sort((a,b) => (a.scores > b.scores) ? -1:1).slice(0,limit);  //倒序排序
	}
}
const movies = new movieCollection(‘Leo‘,
	{name:‘功夫熊猫‘,scores:8.7},
	{name:‘Gongfu‘,scores:9.7},
	{name:‘trjei‘,scores:10},
)
movies.push({name:‘ddddd‘,scores:4})

console.table(movies.topRated()) //会生成一个倒序表格,牛逼了

  

原文地址:https://www.cnblogs.com/jwzhang/p/12104841.html

时间: 2024-11-15 16:04:45

es6 class的基础语法,es6 class继承/ es5 call继承描述/使用apply比较完美继承Array的方法 sort倒序排序console.table()表格生成的相关文章

Scala简介及基础语法

一.scala简介 官网:https://www.scala-lang.org/ Scala语言很强大,集成了面向对象和函数式编程的特点. 运行在JVM(jdk). 大数据中为什么学习scala? spark是scala语言编写. python写spark 挺好的 java写spark 很糟糕(代码实在是太多了) scala写spark 很完美 二.scala特点 1)优雅 框架设计中第一个要考虑的问题就是API是否优雅. 精简的封装. 代码精简(少). 2)速度快 scala语言表达能力强.

Java基础语法之控制流程

Java基础语法之控制流程 语言的流程控制提供了对程序步骤的基本方法. 三大流程控制语句:顺序.选择.循环 复合结构 复合结构是以一个区块为单位的,由"{"开始"}"结束.复合语句会为局部变量创建一个作用域,该作用域会成为程序的一部分.在这个作用域中变量能够被创建使用,如果这个变量在这个作用域外使用,会发生程序错误.复合结构内可以嵌套多个复合结构. 判断结构 判断结构会根据不同的条件结果执行不同的代码块. If结构 if结构中的条件结构是一个布尔值,在条件满足也就是

从零开始学 Web 之 ES6(六)ES6基础语法四

大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:http://www.cnblogs.com/lvonve/ CSDN:https://blog.csdn.net/lvonve/ 在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目.现在就让我们一起进入 Web 前端学习的冒险之旅吧! 一.字符串的扩展

Vue基础之es6

什么是ECMAScript,以及es6的诞生? 1997年 ECMAScript 1.0 诞生 1999年12月 ECMAScript 3.0诞生,它 是一个巨大的成功,在业界得到了广泛的支持,它奠定了JS的基本语法,被其后版本完全继承.直到今天,我们一开始学习JS,其实就是在学3.0版的语法 2000年的ECMAScript4.0是当下ES6的前身,但由于这个版本太过激烈,对ES3做了彻底升级,所以暂时被"和谐"了 2009年12月,ECMAScript5.0版正式发布.ECMA专家

ES6 class的基本语法-学习笔记

1.基本上,ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰.更像面向对象编程的语法而已. 类的内部所有定义的方法,都是不可枚举的(non-enumerable).这一点与 ES5 的行为不一致. 2.类和模块的内部,默认就是严格模式,所以不需要使用use strict指定运行模式.只要你的代码写在类或模块之中,就只有严格模式可用. --考虑到未来所有的代码,其实都是运行在模块之中,所以 ES6 实际上把整个语言升级

Java基础学习笔记七 Java基础语法之继承和抽象类

继承 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系. 例如公司中的研发部员工和维护部员工都属于员工,程序中便可以描述为研发部员工和维护部员工继承自员工,同理,JavaEE工程师和Android工程师继承自研发部员工,而维网络维护工程师和硬件维护工程师继承自维护部员工.这些员工之间会形成一个继承体系,具体如下图所示. 在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称

es6继承 vs js原生继承(es5)

最近在看es2015的一些语法,最实用的应该就是继承这个新特性了.比如下面的代码: 1 $(function(){ 2 class Father{ 3 constructor(name, age){ 4 this.name = name; 5 this.age = age; 6 } 7 8 show(){ 9 console.log(`我叫:${this.name}, 今年${this.age}岁`); 10 } 11 }; 12 class Son extends Father{}; 13 1

1.js基础语法

1.Js基础语法 1.数据类型 JavaScript不区分整数和浮点数,统一用Number表示 NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示 Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity 2.比较运算符 要特别注意相等运算符==.JavaScript在设计时,有两种比较运算符: 第一种是==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果: 第二

javascript里的基础语法、数据类型以及类型转换

Js基础语法 在js里是区分大小写的 标识符:指变量,数组,函数等名字.定义标识其实就是取名字的过程. 硬性要求:指必需要满足的,否则无法通过编译 可不满足 硬性要求内容: 1.由数字,字母和下划线,以及$组成,但不能以数字开头,禁止使用ES里面的关键字和保留字(其实就是ES里内置的标识符). 2.区分大小写 软性要求内容:望文知意 命名法则 驼峰命名法:驼峰命名法分两种,大写是大驼峰(帕斯卡命名法),第一个单词首字母小写是小驼峰. 匈牙利命名法:就是以一个或者多个单词组成.前面还会加上一个固定