我正在阅读javascripts好的部分,并正在测试代码。
Number.method('integer', function ( ) {
document.writeln("called"+ this<0);
return Math[this < 0 ? 'ceiling' : 'floor'](this);
});
并通过将其称为
进行测试document.writeln((-10 / 3).integer());
我收到Uncaught TypeError: Math[(intermediate value)(intermediate value)(intermediate value)] is not a function
错误。难道我做错了什么?我在chrome上测试它
我忘了提及,还有另一种方法添加到function.protoype中作为
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
答案 0 :(得分:2)
没有方法Math.ceiling()
,只有Math.ceil()
。
可能这会产生错误:
未捕获的TypeError:数学[(中间值)(中级 value)(中间值)]不是函数
答案 1 :(得分:1)
您需要添加Number
的原型Number.prototype.integer = function ( )
{
document.writeln("called"+ this<0);
return Math[this < 0 ? 'ceiling' : 'floor'](this);
};
添加到原型时,请确保Number的实例将具有此属性而不是Number对象。
另外,请尽量避免使用document.writeln
,因为它基本上会删除删除现有事件的现有文档。如果需要,请使用document.body.innerHTML
。
Number.prototype.integer = function ( )
{
document.body.innerHTML += "<br>called"+ (this<0);
return Math[this < 0 ? 'ceil' : 'floor'](this); //observe that ceiling is also replaced with ceil since there is no such method called ceiling
};