array.last = doSomething;数组通过点操作符赋值是什么意思?

看一个别人的代码时,发现这种操作,请问是什么意思。

    let stack = [];
    stack.last = function () {
        return this[this.length - 1];
    };

我自己在控制台做这种操作,发现length是0,也不能通过索引访问到。

clipboard.png

阅读 2.9k
5 个回答

谢邀!
疑惑一:点操作符添加方法
JavaScript 原生提供Object对象(注意起首的O是大写),所有其他对象都继承自这个对象。Array是JavaScript的内置对象,所以Object特有的方法和属性,Array同样也有。
疑惑二:数组length为0
stack.last赋值其实是开辟了两个内存地址,你可以理解把它理解成“双胞胎”,长相一模一样都叫stack,但双胞胎归双胞胎,终究不是一个人,一个是哥哥对象,另一个是弟弟数组。你给哥哥赋值,并没有给弟弟添加元素。而length是Array的实例属性,返回或设置一个数组中的元素个数。这是弟弟数组的属性,自始至终您并没有对弟弟数组做什么,所以弟弟数组的length属性还是0.

JS里面的所有类都继承Object,Array也不例外,所以你用对象赋值是可以的

就是给stack绑定一个静态方法,你现在stack里面没东西,当然打出来的都是undefined

万物介对象 数组也是个对象 是对象就可以给他添加方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题