覆盖Object.length函数

时间:2017-03-02 19:00:36

标签: javascript

我想覆盖length函数:

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

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

当使用节点执行时,它会打印[Function]。我期待看到hello

2 个答案:

答案 0 :(得分:1)

您声明.length是一个函数,而不是一个value属性。您可以使用Object.defineProperty

创建只读属性
Object.defineProperty(this, 'length', { get: function() { return val; } });

答案 1 :(得分:0)

因为你所展示的是这个功能。

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

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