<script>
/*
* es6的类语法
* 其实就是用es6的语法 去写构造函数
*
*
*
* 用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,
可以为其添加函数供实例访问,其它的就不清楚了,最近看了一些 JavaScript高级程序设计,终于揭开了其神秘面纱。
每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性,
也就是说将函数用作构造函数调用(使用new操作符调用)的时候,新创建的对象会从原型对象上继承属性和方法。
* */
/*
*es6 的类语法
* +语法:
* class类名{
* //原先 ess内的构造函数体
* constructor(){}
* //直接书写原型上的方法即可
* }
* +注意:必须和new 关键字连用
* =>不和new 关键字连用 会直接报错
*
*
* 其实就是用es6的语法 去写构造函数
*/
function Person(name,age){
this.name =name
this.age=age}
//原型添加一个方法
//原型上的方法目的是为了给实例使用
Person.prototype.sayHi=function(){console.log('hello world')}
//实际上原型上的方法和构造函数应该是一体的
//但是分开了两个地方写 不是错 只是不好
//因此es6出现了类语法
//书写静态属性和方法
Person.a=100
Person,go=function(){console.log('跑起来')}
var p1=new Person('jack',18)
console.log(p1)
console.log(p1.sayHi)
//1.构造函数本质还是一个函数 可以不用new 关键字连用
var p2=Person('Rose',20)///没有和new ;连用
console.log(p2)//p2输出的是 undefined
/*类的书写*/
/*
class Person{
constructor(name,age){
//接收两个形参 这里按照es5的构造函数体书写
this.name=name
this.age=age
}
//直接书写原型上的方法即可
sayHi(){console.log('你好 世界')}
}
//这时我们发现原本分开两个地方的内容变成了一个整体
var p1=new Person('张三',18)
console.log(p1)
p1.sayHi()
//var p2 = Person('李四',20)会报错 不能不和new 连用
*/
</script>
es6类语法
于 2022-02-28 16:25:25 首次发布