getter
和setter
的调用方式很酷
不用写()
执行括弧,就能实现调用函数
当我们给创建一个对象构造器Person
的时候:
function Person(value) { this.counter = value; }
我们可以给对象构造器Person
添加一个getter
或者setter
方法:
Person.prototype = { get increment () { this.counter++; } }
这样当我们new Person
的时候就可以不带执行括弧()
的方式调用increment
var person = new Person(3) person.increment console.log(person.counter) // 4
同理,当我们new
一个数组的之前,我们用同样的方式也给数组添加一个getter
Array.prototype = { get increment() { this[0]++; } } var arr = new Array(1,3); arr.increment console.log(arr) // Array(2)[ 1,3 ]
语法没有报错,但事情却毫无疗效。
我想知道这是为什么?
但是当你给将其写成一个方法的时候,它实际上是有疗效的
Array.prototype.increment = function() { this[1]++; } var arr = new Array(1,3); arr.increment() console.log(arr) // Array(2)[ 1,4 ]
函数式编程
相关分类