javascript扩展函数

时间:2011-02-24 04:03:15

标签: javascript

我读了一本关于如何使用方法扩展对象的书: 我对以下代码感到困惑:

  
    

Array.prototype._m = Array.prototype.m ||
    (Array.prototype.m = function(){
//代码
})
    Object.prototype.m = Array.prototype._m

  

据说这样的代码是安全且高兼容性的 但我看不出它是如何工作的 为什么

  
    

Array.prototype.m =函数(){}

  

不够安全 非常感谢!

2 个答案:

答案 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中的每个对象类型。

如果这就是它的建议,我会对你正在阅读的那本书感到疑惑。