在玩Javascript时,我尝试修改对象原型。
对于String.toString()
,这有效:
var testString = "Test";
testString.toString(); // returns "Test"
String.prototype.toString=function(){return "modified :-)";}
testString.toString(); // now returns "modified :-)"
然而,这不起作用:
Window.prototype.print=function(){
console.log("disabled");
}
window.print(); // still opens the print dialog
为什么这不起作用?
window.print()
有点特别吗?或者Window
是特殊的吗?
注意:
这似乎只发生在Firefox中(在V40上测试)。在Chrome和Internet Explorer中,window.print()
已按预期禁用。
这是Firefox的错误还是设计?
答案 0 :(得分:1)
我找不到任何官方文档,但似乎window.print()
方法在FF内受到保护。
但是,如果您很高兴不使用prototype
,则以下版本在Chrome和FF中运行良好(但未在IE中测试):
window.print = function()
{
console.log('disabled');
}
window.print();