属性如何表现得像函数?
How comes properties act like functions?
如果你安装 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
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,但效果相同。
这可以使用 getters 来实现:
Object.defineProperty(String.prototype, "testing", {
get: function() {
return this.string + ' some test message ';
}
});
console.log( 'my string'.testing ); // my string some test message
如果你安装 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
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,但效果相同。
这可以使用 getters 来实现:
Object.defineProperty(String.prototype, "testing", {
get: function() {
return this.string + ' some test message ';
}
});
console.log( 'my string'.testing ); // my string some test message