访问es2015类函数成员
Access es2015 class function member
'use strict';
class Test {
lorem () {
}
static ipsum () {
}
}
console.log(Test.lorem); // undefined
console.log(Test.ipsum); [Function]
有没有办法访问Test.lorem?我试过Test.prototype.lorem和Test.lorem,但都返回未定义的结果。
我想测试的函数的构造函数做了一些类似构造函数的事情,所以在单元测试中,我只想直接从类中运行函数。
有什么想法吗?
该方法在prototype
中可用。
Test.prototype.lorem
但是,请记住,直接调用此方法意味着this
将不会引用对象的实例。
Test.lorem
未定义,因为它不是静态方法。将非静态方法添加到prototype
对象中。
证据汇编自Babel 6与ES2015预设。
'use strict';
var _createClass = (function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Test = (function () {
function Test() {
_classCallCheck(this, Test);
}
_createClass(Test, [{
key: 'lorem',
value: function lorem() {}
}], [{
key: 'ipsum',
value: function ipsum() {}
}]);
return Test;
})();
console.log(Test.prototype.lorem);
除非是静态成员,否则不应该在没有实例的情况下执行方法。
在大多数(如果不是全部的话)面向对象语言中,这是一个非常基本的概念。
如果您只想获得函数的引用,那么使用类原型确实可行。
顺便说一句,实际上可以在没有实例的情况下执行方法,因为JavaScript确实允许这种灵活性,但您应该避免这种做法。
您需要一个Test
的实例。
class Test {
lorem () {
console.log('test');
}
static ipsum () {
}
}
var test = new Test();
test.lorem();
或者你可以做
Test.prototype.lorem();
不确定为什么我得到了-1,但有
类方法在ES2015中是不可枚举的
不能直接访问非静态的类成员。
https://phabricator.babeljs.io/T959
相关文章:
- Mongoose传递类函数
- .hasClass 在 onclick 函数中不起作用,但删除和添加类函数可以
- 在NodeJS中使用类函数作为事件侦听器
- 如何在类函数中发送ajax请求
- 调用子类函数时调用的超类函数
- 以单个类函数而不是整个类组为目标
- 从类函数中删除类变量
- 如何从类函数内部访问对象属性
- JavaScript:对类/函数和对象使用相同的名称
- 单击JavaScript添加和删除类函数
- 访问类函数
- 在forEach中调用类函数:Javascript如何处理“this”关键字
- 动态调用类函数
- 如何从闭包调用javascript类函数
- 从Javascript中的类中调用类函数,Jquery
- 无法在 JS 中获取继承的类函数
- 类函数调用
- 获取自身内的类函数名称
- 将类函数作为参数传递给另一个类,以用作 JavaScript 中的回调
- 访问es2015类函数成员