JavaScript语言不同于其他的类C语言,没有提供类的概念,但是可以提供类似的语法糖来实现JS面向对象的编程范式,本质上不是严格意义上的类
我们创建一个Person对象,包含两个属性name,age和一个普通的方法run()和静态方法say()。
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
static run() {
console.log("run")
}
say() {
console.log("hello!")
}
}
Person.run();
通过 static 关键字定义静态方法,静态方法只能通过类本身去调用,不能通过实例来调用。
var Person = function () {
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.run = function run() {
console.log("run");
};
var _proto = Person.prototype;
_proto.say = function say() {
console.log("hello!");
};
return Person;
}();
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
var Person = function () {
function Person(name, age) {
if(!(this instanceof Person)) {
throw new TypeError("Cannot call a class as a function")
}
this.name = name;
this.age = age;
}
_createClass(Person, [{
key: "say",
value: function say() {
console.log("hello!");
}
}], [{
key: "run",
value: function run() {
console.log("run");
}
}]);
return Person;
}();
这里我们参考了bable.js的转义代码:_createClass和_defineProperties两个函数。
_createClass(Constructor, protoProps, staticProps)
_defineProperties(target, props)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。