首页 > 代码库 > es5 和 es6 class
es5 和 es6 class
// ES5 function User(name,age) { this.name = name; this.age = age; } // 静态方法 User.getClassName = function(){ return ‘User‘ } User.prototype.changeName = function(name){ this.name = name } User.prototype.changeAge = function(Age){ this.Age = Age } Object.defineProperty(User.prototype,‘info‘,{ get(){ return ‘name‘+this.name+‘age‘+this.age } }) // 子类 function Manager(name,age,password){ User.call(this,name,age); this.password = password } // 继承静态方法 Manager.__proto__ = User // 继承原型方法 Manager.prototype = User.prototype; //添加新方法 Manager.prototype.changePassword = function(pwd){ this.password = password } var manager = new Manager(‘leo‘,22,‘123‘); manager.changeName(‘zengliang‘); console.log(User.name) //User console.log(manager.name) //zengjiang function test(){ console.log("1") } console.log(test.name) //test
ES6
// function User(name,age) { // this.name = name; // this.age = age; // } class User { constructor(name,age){ this.name = name; this.age = age; } // // 静态方法 // User.getClassName = function(){ // return ‘User‘ // } static getClassName(){ return ‘User‘ } // 方法的定义 // User.prototype.changeName = function(name){ // this.name = name // } // User.prototype.changeAge = function(Age){ // this.Age = Age // } changeName(name){ this.name = name } changeAge(age){ this.age = age } // 自定义属性 // Object.defineProperty(User.prototype,‘info‘,{ // get(){ // return ‘name‘+this.name+‘age‘+this.age // } // }) get info(){ return ‘name‘+this.name+‘age‘+this.age } } // 子类 // function Manager(name,age,password){ // User.call(this,name,age); // this.password = password // } class Manager extends User{ // 和call的区别,call先创建自身对象 constructor(name,age,password){ // super先创建父对象 必须 super(name,age); this.password = password } // //添加新方法 // Manager.prototype.changePassword = function(pwd){ // this.password = password // } changePassword(password){ this.password = password } get info(){ var info = super.info; console.log(info) } } // 下面的静态方法跟原型方法已经继承了,无须写其他的 // // 继承静态方法 // Manager.__proto__ = User // // 继承原型方法 // Manager.prototype = User.prototype; console.log(typeof User,typeof Manager)//function function // var manager = new Manager(‘leo‘,22,‘123‘); // manager.changeName(‘zengliang‘); // console.log(User.name) //User // console.log(manager.name) //zengjiang // function test(){ // console.log("1") // } // console.log(test.name) //test
不会提升
// // 立即执行 // let user = new class User{ // constructor(name){ // this.name = name // } // }(‘zengliang‘); // console.log(user) // 会报错,因为不会提升 // var user = new User() // class User{ // constructor(name){ // this.name = name // } // }
es5 和 es6 class
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。