片段 1:
var box = function() {};
box.prototype.open = function {
};
片段2:
var box = function() {
this.open = function() {
};
}
这两个有什么区别,哪个更好?
最佳答案
我们是否应该假设 box
是一个构造函数,所以您正在执行 new box()
?
如果是...
第一个版本将在
box
构造函数创建的所有对象之间共享open
函数。第二个将为从
box
构造函数创建的每个对象生成一个新的函数对象。
因此,第一个比第二个内存效率更高。
第一版:
new box box prototype object prototype
+--------------+ +--------------+ +--------------+
| | | | | |
| |--------->| open func |--------->| |
| | / | | | |
+______________+ / +______________+ +______________+
/
/
new box /
+--------------+ /
| | /
| |/
| |
+______________+
第二个版本:
new box box prototype object prototype
+--------------+ +--------------+ +--------------+
| | | | | |
| open func |--------->| |--------->| |
| | / | | | |
+______________+ / +______________+ +______________+
/
/
new box /
+--------------+ /
| | /
| open func |/
| |
+______________+
关于javascript - 使用下面两个定义的方法的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8868100/