我读了一本关于如何使用方法扩展对象的书: 我对以下代码感到困惑:
Array.prototype._m = Array.prototype.m ||
(Array.prototype.m = function(){
//代码
})
Object.prototype.m = Array.prototype._m
据说这样的代码是安全且高兼容性的 但我看不出它是如何工作的 为什么
Array.prototype.m =函数(){}
不够安全 非常感谢!
答案 0 :(得分:0)
这是说如果!!Array.prototype.m
为真,那么Array.prototype._m应该等于Array.prototype.m。
如果!!Array.prototype.m
为false,则设置Array.prototype.m
,然后将Array.prototype._m
设置为它。
然后将该方法应用于Object.prototype
。
实际上这只是Object.prototype.m = Array.prototype.m
的很长一段路。
不同之处在于确保首先定义它。
答案 1 :(得分:0)
@tylermwashburn解释得很清楚。
基本上...
Array.prototype.m
Array.prototype._m
Object.prototype.m
...都将引用相同的功能。如果Array.prototype.m
不存在,则存储在Array.prototype.m
或新函数中的任何内容。
我只想补充一点,扩展Object.prototype
是一个坏主意。它扩展了javascript中的每个对象类型。
如果这就是它的建议,我会对你正在阅读的那本书感到疑惑。