ES5 ES6 构造函数和 class的对比

构造函数和类的作用: 可以通过 new 关键字来创建一个对象


两者基本使用使用时的区别

比较项目ES5(构造函数写法)ES6(类的写法)
定义function Myobj(x) {}class Myobj{}
构造函数function Myobj(){}constructor(){}
公共属性this.x = xconstructor(x){this.x=x}
公共方法this.show = function(){}constructor(){this.show=function(){}}
静态方法Myobj.test = function(){}static test = function(){}
静态属性Myobj.staticProp=‘静态属性’static staticProp=‘静态属性’
私有方法构造函数内部 定义一个方法 function privateMethod(){}将私有的方法模块化出去
私有属性构造函数内部定义一个变量 let privateProp = ‘私有属性’#privateProp = ‘私有属性’

ES5的继承方法(三种)
原型继承

function Base(name) {
	this.name = name
	this.show = function(){
		console.log('show()')
	}
}
function Sub(){
	
}
Sub.prototype = new Base()

call apply bind继承

//call 继承
function Base(name) {
	this.name = name
	this.show = function(){
		console.log('show()')
	}
}
function Sub(name){
	Base.call(this,name)	
}
//或者apply继承
function Sub(name) {
	Base.apply(this,[name])// 或者 Base.apply(this,arguments)
}
//或者bind继承
function Sub(name){
	Base.bind(this,name)()
}

ES6的继承方式

class Base{
	constructor(name) {//构造函数
	this.name = name
	this.show = function(){
		console.log('show()')
		}
	}
}
class Sub extends Base{
	constructor(name,color){
		super(name)//继承父类的构造函数
		this.color = color//子类新增的属性
		this.addMethod = function(){
			console.log('子类新增的方法')
		}
	}
}

ES5 各类属性方法应该如何定义书写

function Base(name){
  this.publicProp = name//公有属性
    this.publicMethod = function(){//公有方法
        console.log('公有方法')
    }
    let privateProp = 10//私有属性
    function privateMethod() {//私有方法
        console.log('私有方法');
    }
}
Base.staticProp = '静态属性'//静态属性
Base.staticMethod = function() {//静态方法
    console.log('静态方法')
}

ES6各类属性方法应该如何定义书写

class Base {
	static staticProp = '静态属性'
	static staticMethod = function () {
	    console.log('静态方法', '')
	}
	constructor(name) {/* 构造函数 */
	    this.publicProp = name//公有属性
	    this.publicMethod = function () {//公有方法
	        console.log('公有方法')
	    }
	}
	callPrivate(args){
	    privateMethod.call(this,args)
	}
}
	
function privateMethod(args){
	console.log('私有方法')
}

#property 表示私有方法和属性现在只是提案, 我在vscode 编辑器中使用会报错(采用曲线救国的方法)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值