请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么使用 es5 语法 实现 class 的时候,函数要挂载在原型上,不是直接 this.getName 呢?

function Foo(name) {
    this.name = name
    this.city = '北京'
}
Foo.prototype.getName = function () { 
    return this.name
}

为什么是上面的写法,而不是下面的呢?两者有什么区别吗?我测试了两个都能得到结果

function Foo2(name) {
    this.name = name
    this.city = '北京'
    this.getName = function () { 
	    return this.name
	}
}

正在回答

1回答

这个问题可以换一种方式问:对象自身的方法,和原型方法,有什么区别?—— 首先你要明白这个问题。


然后,class 语法就是通过原型实现的,不是通过 this.xxx 实现的,所以用原型。

0 回复 有任何疑惑可以回复我~
  • 提问者 走去偷柿子呀 #1
    对象自身的属性和方法只对该对象有效,而原型链中的属性方法对所有实例有效。可以这样回答吗?
    回复 有任何疑惑可以回复我~ 2022-08-01 21:33:01
  • 双越 回复 提问者 走去偷柿子呀 #2
    是的。
    回复 有任何疑惑可以回复我~ 2022-08-01 22:13:30
  • 提问者 走去偷柿子呀 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2022-08-02 10:48:36
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信