es6写法–class
class People{
constructor(name,age) {
this.name = name;
this.age = age;
}
say(){
console.log(`My name is ${this.name},i am ${this.age}岁了`)
}
}
let ming = new People('xiaoming','12')
ming.say()//My name is xiaoming,i am 12岁了
console.log(typeof People === 'function') //true
es5写法–构造函数
function People (name, age){
this.name = name;
this.age = age
}
People.prototype.say = function (){
console.log(`My name is ${this.name},i am ${this.age}岁了`)
}
let ming = new People('xiaoming','12')
ming.say() //My name is xiaoming,i am 12岁了
console.log(typeof People === 'function') //true
new 操作符发生了什么
// new的时候发生了什么
// 1,let obj = new Object
// 2,People 里面的constructor函数this指向obj: obj.proto == People.peototype
// 3,执行constructor方法,传入参数即
// People.apply(obj,['xiaoming','12'])
// /obj = {
// name:'xiaoming',
// age:'12'
// }
//4,return obj; 即 ming = obj
我个人感觉其实es6的class,只是对es5写法的包装,其实原理没有并变化,规范了写法。而且也引入的很多新的概念,比如extend.这些后续我在写。
希望能够帮助到大家,有什么不对大神可以指出。共同学习进步。
----立志做一个高产的母猪的作者君