我现在有一个对象O,我需要在对象O上面添加一个init方法,书写方式如下:
第一种:
O.prototype = {
init:function () {
}
}
第二种:
O.prototype.init = function () {
}
这两种书写方式有什么区别吗?以及在调用上面有什么需要注意的吗?
我现在有一个对象O,我需要在对象O上面添加一个init方法,书写方式如下:
第一种:
O.prototype = {
init:function () {
}
}
第二种:
O.prototype.init = function () {
}
这两种书写方式有什么区别吗?以及在调用上面有什么需要注意的吗?
第一种写法相当于给O.prototype赋值,使其指向了一个新的对象;
第二种写法是在原有O.prototype对象的基础上,添加属性;
这两种都可以使用,但使用的时候,最好只用其中一种。一起使用的时候,要注意第一种写法会使之前定义在O.prototype上的方法失效。
首先如果你能直接用 第二种 方式,一个合理的猜测是 O
是一个函数,那么使用 第一种 方式会替换掉 prototype
导致其中的 constructor
跟原来不一致。你可以补上(或者刻意改变 constructor 什么的就不在此作讨论了)
O.prototype = {
constructor: O,
init:function () {
}
}
10 回答11.4k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
其实都可以起到的作用到是在o的原型上扩充了方法,但是 如果你方法很多的时候 为了代码的可维护性 健壮性 以及易读性方面的考虑我们还是更多的采用第一种方法, 最起码是普遍大众都在用的方法,希望对你有所帮助