问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

javascript 原型添加方法的问题

发布网友 发布时间:2022-05-06 20:12

我来回答

4个回答

懂视网 时间:2022-04-23 22:29

给类型添加方法
javascript中允许给基本类型添加方法。如:boolean、string、Number
实例:在Function中添加一个method函数,该函数为Function添加其他自定义的函数(避免使用prototype),然后利用method函数想Function中添加一个add函数,最后测试add函数在Function中确实存在。该方法将func函数添加到Function中,以name命名。然后,返回Function的对象

Function.prototype.method = function(name, func){
 // 避免覆盖已有的方法
 if(!this.prototype[name]){
 this.prototype[name] = func;
 }
 return this;
};
// 通过Function.method方法添加一个加法函数到Function,该函数的名称为“add”
Function.method("add", function(a, b){
 if(typeof a != 'number' || typeof b != 'number'){
 throw {
  'name' : "typeError",
  'message' : "add方法必须传入数字"
 };
 }
 return a + b;
});
// 调用Function的add方法是否存在
(function(){
 try{
 alert(Function.add(1, 3)); // 
输出:4 } catch(e){ if(e.name === 'typeError'){ alert(e.message); } } })(); // 去除字符串两端的空白 String.method("trim", function(){ return this.replace(/^s+|s+$/g, ''); }); alert('|' + " hello world ".trim() + '|'); // 输出: '|hello world|' // 添加数字的取整函数 Number.method("integer", function(){ // 可以通过此种方式调用函数,如:Math.random() == Math['random']() == Math["random"]() return Math[this < 0 ? 'ceil' : 'floor'](this); }); alert((-10 / 3).integer()); // 输出:-3

热心网友 时间:2022-04-23 19:37

F 是 Function 的一个实例
Function 本身同样也是 Function 的一个实例!
关于这一点 你可以由 typeof Function == 'function' 和 Function instanceof Function 来验证 (两者返回都是true)
作为 Function 的一个实例
你给它的原型加上 ff 属性 它自然也就继承了这个属性
另外 F 和其他所有的 Function 的实例都继承了这个属性

热心网友 时间:2022-04-23 20:55

prototype是给系统自定义的对象加属性或方法

热心网友 时间:2022-04-23 22:30

var F = function(){}
F.prototype.aa = function(){alert(1);}
var F = function(){}
F.prototype.aa = function(){alert(1);}
var f=new F();
f.aa();
alert("f.aa="+f.aa);
alert("F.aa"+F.aa);
//f.aa();是对象调用方法,f.aa是对象调用属性,F.aa不接受,因为相当于用类直接调方法。//这个是不行,得用对象调用。
var G = function(){}
G.aa = function(){alert(1);}
alert("G.aa="+G.aa);
//G在这里是一个对象,对象调用属性。

Function.prototype.ff = function(){}
var ff1=new Function();
alert("ff1.ff="+ff1.ff);
alert("Function.ff="+Function.ff);

Object.prototype.ff = function(){}
var ff2=new Object();
alert("ff2.ff="+ff2.ff);
alert("Object.ff="+Object.ff);
//Function,Object,String,Date,Array等都是js提供的对象。

他们本身已经存在。所以Function.ff,Object.ff是可以的。

能明白吗?是更明白了还是更糊涂了,更糊涂了吧。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
美的面包机和面要多久 美的面包机和面的时间要多长 美的面包机怎么用手动操作 如何用美的面包机发面 如何用美的面包机和面 美的面包机如何和面 CDR教程—教你如何使用CorelDRAW复制图形方法 苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 为什么说javascript是基于原型的呢 华硕笔记本怎么快速进入bios js面向对象中的动态原型模式怎么理解 一个微波炉一开机以后一直在吱吱吱响而且不加热是怎么回事 微波炉插上电源为什么嗡嗡响很闹心,还能用 微波炉通电后,在没启动的情况下,有吱吱嘎嘎的噼里啪啦的声音是怎么回事啊?微波炉功能都正常,就是受不 请问微波炉一通电后就有嗡嗡的响声是怎么回事?怎么解决 正常的口温体温腋温值 爱思助手解除已停用怎么办 微波炉插上插头,就听到滋滋的声音,为什么呢。 腋温,口温,肛温的正常范围值各是多少?脉搏和血压的正常范围值各是多少? 婴儿的正常体温,应该是多少度? 用口温计测口温,多少度才算正常? 河歌苹果安卓二合一数据线质量好吗? 今天买了个荣耀V39送了一条荣耀二合一数据线,这个线和V30原装线哪个好? 金士顿苹果5S二合一数据线好用吗? 苹果一直困扰我充电不能插耳机的问题。我在淘宝上买了一条二合一的数据线,但是这种线对手机会造成伤害吗 懒人线是什么 二合一数据线是什么鬼?好用不?一般价格在多少啊? 怎么查看自己的滴滴个人信息和司机对自己的评价 极速一键重装系统,教您如何重装电脑 wd2007清除格式是什么键 哪个牌子的松露巧克力好吃 如何美国动作片《双子杀手》? 李安新作《双子杀手》国内定档10月18日,《双子杀手》有机会成为票房赢家... 如何评价李安导演新作《双子杀手》的最新中文预告? 《双子杀手》:李安”少年派”后的中年”漂流”,能否撑起国庆档? 双子杀手什么时候在国内上映? 你对李安的《双子杀手》有哪些期待? 佳能m5能USB充电吗 李安电影《双子杀手》为什么票房和口碑存在争议,最大的问题是什么? 如何强制二次修改 《双子杀手》颠覆电影工业,电影都运用了哪些电影新科技? 《双子杀手》演员是父子吗? 《双子杀手》法国上映遭热捧,其中有什么特殊原因? 如何一年内强制二次修改? 佳能sx50hs相机能用充电宝吗 佳能57x电池能用充电宝给电吗? 如何强制二次修改? 怎样强制改