javascript中Function.prototype的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中Function.prototype的问题相关的知识,希望对你有一定的参考价值。

javascript语言精粹中看到这样的代码:
Function.prototype.method=function(name, func)

this.prototype[name]=func;
return this;
;
Number.method('integer',function()

return Math[this<0 ? 'ceiling' : 'floor'](this);
);
document.writeln((-10/3).integer());
我自己调试不成功,提示 Object #<Object> has no method 'ceiling'
有什么解决方法么?
另外谁能跟我解释下这个,我理解的是Function.prototype给它加方法的话,应该是之后定义的任何函数都有这个方法,但是Math不是一种数据类型么,跟Function神马关系?

没有ceiling,是ceil。这里应该是印刷错误。Math不是数据类型,是对象。Number才是数据类型,它表示数值类型,它也可以创建对象。我们自定义对象的时候,一般都是这么写的
function myObject() ,所以对象有时候也可以叫做函数。 Number如果没有方法method,它会沿着原型链一直往上找,如果没找到,就返回undefined追问

首先感谢你真正解决了我第一个问题
其次我想问下,照1楼的那个图,Number找方法的时候顺序是:Number Number.prototype Function.prototype Object.prototype是么

追答

嗯,相当于继承一样。子类没有,往父类找,一直到最顶层,如果还没有,就会报错了。

参考技术A

Function对象是JS的内置对象.

Function.protoype是对象的原型

function 方法名(参数1,参数2)

  代码;

相当于

方法名 = function (参数1,参数2)

  代码;

相当于

方法名 = new Function(参数1,参数2,"代码;");

参考技术B Math 不是一种数据类型,是js对象;

javascript - 使用另一个函数中的变量 javascript - '今天未在对象中定义'

【中文标题】javascript - 使用另一个函数中的变量 javascript - \'今天未在对象中定义\'【英文标题】:javascript - use a variable from another function javascript - 'today is not defined at Object'javascript - 使用另一个函数中的变量 javascript - '今天未在对象中定义' 【发布时间】:2022-01-23 06:11:42 【问题描述】:

我尝试获取今天的日期,以便在带有函数的 URL(连接)中使用它。但是,每次我尝试运行它时,我都会遇到同样的错误:今天没有在 Object 中定义

我尝试使用和不使用 var/let/const 来声明它,但错误仍然存​​在。有人有想法吗(console.log())只是为了测试)?

function GetTDDate() 
  today = new Date();
  var dd = String(today.getDate()).padStart(2, '0');
  var mm = String(today.getMonth() + 1).padStart(2, '0');
  var yyyy = today.getFullYear();

  today = yyyy + '-' + mm + '-' + dd;
  console.log(today);


const FetchURL = "https://static.data.gouv.fr/resources/donnees-relatives-aux-personnes-vaccinees-contre-la-covid-19-1/20211221-212503/vacsi-tot-fra-" + today + "-21h25.json"
console.log(FetchURL)

【问题讨论】:

你今天实际上在哪里声明。因为在该代码中您没有声明它,这就是您需要 var、let 或 const 的原因 使该函数返回today 这能回答你的问题吗? How to access variable outside js function 【参考方案1】:
      var today = new Date();


      function GetTDDate() 
      var dd = String(today.getDate()).padStart(2, '0');
      var mm = String(today.getMonth() + 1).padStart(2, '0');
      var yyyy = today.getFullYear();

       today = yyyy + '-' + mm + '-' + dd;
       console.log(today);

    const FetchURL = "https://static.data.gouv.fr/resources/donnees-relatives- 
   aux-personnes-vaccinees-contre-la-covid-19-1/20211221-212503/vacsi-tot-fra-" 
    + today + "-21h25.json"
     console.log(FetchURL)

【讨论】:

你的超出范围,要么在函数外声明变量,要么让函数返回值,前者更好【参考方案2】:

这可能是您想要做的。因为 today 变量的作用域是你应该 return 它的函数,然后在定义 fetchURL 时你可以调用你的函数来访问 today 变量。

你可以这样做:

function GetTDDate() 
  let today = new Date();
  var dd = String(today.getDate()).padStart(2, '0');
  var mm = String(today.getMonth() + 1).padStart(2, '0');
  var yyyy = today.getFullYear();

  today = yyyy + '-' + mm + '-' + dd;
  console.log(today);
  return today


const FetchURL = "https://static.data.gouv.fr/resources/donnees-relatives-aux-personnes-vaccinees-contre-la-covid-19-1/20211221-212503/vacsi-tot-fra-" + GetTDDate() + "-21h25.json"
console.log(FetchURL)

【讨论】:

声明today时需要varletconst 谢谢我错过了。【参考方案3】:

解决您的问题的一个更简单的方法是:


const FetchURL = `https://static.data.gouv.fr/resources/donnees-relatives-aux-personnes-vaccinees-contre-la-covid-19-1/20211221-212503/vacsi-tot-fra-$(new Date()).toISOString().slice(0,10)-21h25.json`;

console.log(FetchURL);

【讨论】:

实际上这更容易且有效。谢谢

以上是关于javascript中Function.prototype的问题的主要内容,如果未能解决你的问题,请参考以下文章

javascript中valueOf()方法的用法?

javascript 从一个数组中 删除 一个数组

javascript - 使用另一个函数中的变量 javascript - '今天未在对象中定义'

javascript中如何获得ul中所有列表项的值

javascript中Function.prototype的问题

javascript中Function 与Object的关系