gpt4 book ai didi

javascript - jQuery + 扩展 Object.prototype = "c.replace is not a function"

转载 作者:数据小太阳 更新时间:2023-10-29 05:53:22 24 4
gpt4 key购买 nike

我在我的开源项目中使用 jQuery 1.5,我自己的 Javascript 代码中也出现了以下行:

/**
* Object.isEmpty()
*
* @returns {Boolean}
*/
Object.prototype.isEmpty = function ()
{
/**
* @deprecated Since Javascript 1.8.5
* @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object
*/
if ( this.__count__ !== undefined )
{
return this.__count__ === 0 ? true : false;
}

/* Less-aesthetic method, if above method fails */
for ( var property in this )
{
if ( this.hasOwnProperty(property) )
{
return false;
}
}
return true;
};

它只是扩展了 Object.prototype 并向其添加了 isEmpty() 方法[检查对象是否为空]。由于这个添加,我的 Firebug 控制台出现了“c.replace is not a function”错误;我对 web 的研究引导我使用 jQuery bug tracker message ,在那里我“了解到”扩展 Object.prototype 不仅破坏了 jQuery,而且还是糟糕的编码习惯。我的问题是,为什么?

最佳答案

ECMA-262 第 5 版(和 JavaScript 1.8.5)有办法通过 Object.definePropertyObject.defineProperties 方法来实现,通过设置 enumerable 属性的字段为 false。这在 Chrome 5、Safari 5、Firefox 4 和 Internet Explorer 9 或任何使用 V8(如 Node.js)的最新服务器端实现中可用。

关于javascript - jQuery + 扩展 Object.prototype = "c.replace is not a function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5056306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com