Javascript 重写Object.length函数

Javascript 重写Object.length函数,javascript,Javascript,我想覆盖长度函数: function x_funct(){ this.length = function(){ console.log("hello"); return 8; } }; var x = new x_funct(); console.log(x.length); 当使用节点执行时,它将打印[函数]。我希望看到您将.length声明为函数,而不是值属性。您可以使用Object.defineProperty Object.defi

我想覆盖
长度
函数:

function x_funct(){
     this.length = function(){
         console.log("hello");
        return 8;
    }
};

var x = new x_funct();
console.log(x.length);

当使用节点执行时,它将打印
[函数]
。我希望看到您将
.length
声明为函数,而不是值属性。您可以使用
Object.defineProperty

Object.defineProperty(this, 'length', { get: function() { return val; } });

因为这就是你所展示的功能

函数是Javascript中的对象,因此如果您尝试打印
x.length
,则打印函数本身,而不是结果


如果要打印结果,应编写
x.length()

为什么不允许?你运行它意味着它是被允许的。您是否在问为什么您没有调用的函数没有被调用?
x.length
确实是一个函数。你是想调用这个函数吗
x.length()
请编辑问题并解释您的意思。您希望看到函数的源代码吗?您是否希望执行该函数?还有什么?我想覆盖长度函数,包括console.log(“hello”)。@lulbaiking因为你没有编辑这个问题,所以我是为你做的,但当然我不是你,所以我不能假设我理解你的需求。如果我没有理解,请自己编辑这个问题。