属性如何像函数一样?

时间:2015-05-26 16:52:24

标签: javascript properties getter

如果您安装colors,您将看到可以编写如下脚本:

var colors = require('colors');

console.log('hello'.green);
console.log('i like cake and pies'.underline.red)
console.log('inverse the color'.inverse);
console.log('OMG Rainbows!'.rainbow);
console.log('Run the trap'.trap);

属性如何像函数一样(如[5, 6, 4].count?)。

我理解'Run the trap'.trap()但不理解'Run the trap'.trap

2 个答案:

答案 0 :(得分:5)

JavaScript允许您为setter和属性定义getter(甚至在原型上):

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

console.log([1, 2, 3].count);

谨慎使用。颜色,特别是uses the non-standard __defineGetter__ function instead,但效果相同。

答案 1 :(得分:1)

这可以使用getters

来实现
Object.defineProperty(String.prototype, "testing", {
    get: function() {
        return this.string + ' some test message ';
    }
});
console.log( 'my string'.testing ); // my string some test message