提到 js 指针,其实我是懵圈儿的,准确来说,应该是没有的,引用倒是满天飞。不过下面的这个例子值得看看。
Are there pointers in javascript?
No, JS doesn’t have pointers.
Objects are passed around by passing a copy of a reference. The programmer cannot access any C-like “value” representing the address of the object.
Within a function one may change the contents of an passed object via that reference, but you cannot modify the reference that the caller had, because your reference is only a copy:
var foo = {'bar': 1};
function tryToMungeReference(obj) {
obj = {'bar': 2}; // won't change caller's object
}
function mungeContents(obj) {
obj.bar = 2; // changes _contents_ of caller's object
}
tryToMungeReference(foo);
foo.bar === 1; // true - foo still references original object
mungeContents(foo);
foo.bar === 2; // true - object referenced by foo has been modified
其他参考
JavaScript 的指针是什么?
备注:我还是觉得js里面是没有指针的,除了this指针,更何况,ES6都没有this了。不过js里面绝对有比C里面的指针更刺激的东西,见如下系列。
未完待续