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神马关系?
function myObject() ,所以对象有时候也可以叫做函数。 Number如果没有方法method,它会沿着原型链一直往上找,如果没找到,就返回undefined追问
首先感谢你真正解决了我第一个问题
其次我想问下,照1楼的那个图,Number找方法的时候顺序是:Number Number.prototype Function.prototype Object.prototype是么
嗯,相当于继承一样。子类没有,往父类找,一直到最顶层,如果还没有,就会报错了。
参考技术AFunction对象是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
时需要var、let或const。
谢谢我错过了。【参考方案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 - 使用另一个函数中的变量 javascript - '今天未在对象中定义'