ES6中类的本质
作者:互联网
类是用于创建对象的模板。他们用代码封装数据以便更好的处理该数据(简单的说ES6的类就是语法糖)。 JS中的类是建立在原型上,
class的本质: 其实还是一个函数
<script>
class Person {
}
console.log(typeof Person); //function
</script>
上面打印出function 既类的本质其实还是一个函数 我们也可以简单的认为类就是构造函数的另外一种写法
但是ES6 之前通过 构造函数和原型实现面向对象编程
-
构造函数时有原型对象prototype 利用prototype 里面的constructor 指向构造函数本身
-
构造函数可以通过原型对象添加方法
-
构造函数创建的实例对象有__proto__ 原型指向 构造函数的原型对象
ES5写法:
<script>
function Person(name,age){
this.name=name;
this.age= age;
Person.prototype.sayHello=function(){
console.log('Hello,my name is ' +this.name);
}
}
var p1=new Person('张三',20)
var p2=new Person(' 李思',19)
p1.sayHello();
console.log(p1);
console.log(p1.__proto__ === Person.prototype); //true
</script>
但现在利用ES6 class 编程时:
<script>
class Person {
}
console.log(typeof Person); //function
console.log(Person.prototype); //object
console.log(Person.prototype.constructor); // class Person{}
Person.prototype.sing = function() { //原型对象添加方法
console.log('');
}
var p1= new Person();
console.dir(p1);
console.log(p1.__proto__ === Person.prototype); //true
</script>
总结:由上面可以知道:
-
class的本质 其实还是一个函数
-
类有原型对象prototype
-
类原型对象prototype 里面有constructor 指向类本身
-
类可以通过原型对象添加方法
-
类创建的实例对象有__proto__ 原型指向 类的原型对象
标签:ES6,console,log,本质,Person,原型,prototype,中类,构造函数 来源: https://blog.csdn.net/weixin_46104934/article/details/119486502