ES6允许扩展特殊对象.所以可以从函数继承.这样的对象可以作为函数调用,但是如何实现这种调用的逻辑呢?
class Smth extends Function {
constructor (x) {
// What should be done here
super();
}
}
(new Smth(256))() // to get 256 at this call?
Run Code Online (Sandbox Code Playgroud)
类的任何方法都可以通过引用类实例this.但是当它被称为函数时,this指的是window.当作为函数调用时,如何获取对类实例的引用?
PS:俄语同样的问题.
javascript inheritance function ecmascript-6 javascript-inheritance
如何在JavaScript中为可调用对象创建构造函数?
我尝试了各种各样的方式,比如跟随.这个例子只是缩短了实际对象的例子.
function CallablePoint(x, y) {
function point() {
// Complex calculations at this point
return point
}
point.x = x
point.y = y
return point
}
Run Code Online (Sandbox Code Playgroud)
这工作在第一,但它创建的对象不是实例CallablePoint,因此它不会从复制的属性CallablePoint.prototype,并说false上instanceof CallablePoint.是否可以为可调用对象创建工作构造函数?
在JavaScript中,函数是可调用的.
我可以从函数中删除此属性,只留下一个普通对象吗?
var foo = function () {};
foo.[[callable]] = false; // pseudocode
foo(); // "foo is not a function"
Run Code Online (Sandbox Code Playgroud)